以下笔记摘录自『 The Go Workshop 』。
切片的核心其实还是阵列,切片只是在阵列外套上一层额外的包装,让我们能够建立有数字索引键的有序集合,也不必担心长度问题,并且,我们可以很简单的使用Golang的内建函式append()去新增元素,可以透过以下方法:
<新切片> = append(<切片>, <新元素>)
大部分的程序码很少使用阵列,应尽量使用切片取里所有的有序集合。
append()可以一次加入多个值到切片里,因为第二个值可以接收数量不定的值:
<新切片> = append(<切片>, <新元素1>, <新元素2>,..., <新元素N>)
我们也能在append()里面传入一个切片,在後面加上解包算符(unpack operator),也就是...
。
For example,
package main
import (
"fmt"
"os"
)
func getPassedArgs() []string {
var args []string
for i := 1; i < len(os.Args); i++ {
args = append(args, os.Args[i])
}
return args
}
func getLocals(extraLocals []string) []string {
var names []string
names = append(names, "Leo", "Fanny")
names = append(names, extraLocals...)
return names
}
func main() {
names := getLocals(getPassedArgs())
fmt.Println("名字:", names)
}
//Command line
go run . Jannet
//Output
名字: [Leo Fanny Jannet]
<新切片> = <阵列或切片>[<起始索引>:<结束索引(不含)>]
范围会从起始索引算起,一直到结束索引的前一个索引
注意!!当我们使用这种方法时,golang不会真的将资料复制到新的阵列。
For example,
package main
import "fmt"
func message() string {
s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
m := fmt.Sprintln("元素:", s[2:7])
return m
}
func main() {
fmt.Print(message())
}
//Output
元素: [3 4 5 6 7]
<<: Day28 :【TypeScript 学起来】React + TypeScript 实作简单 Todo App Part1
Reader 是我们 Android library 里面最外层的 API ,要测试它要先考虑它有跟...
上一篇中整理了一些面试中常被问到的技术问题,其中我觉得两个比较重要的就属死结(deadlock)与D...
前一天我们讲到综合版可以接收所有种类的讯息。 @csrf_exempt def callback(r...
主要呈现实作成果 以下内容有参考教学影片,底下有附网址。 (内容包括我的不专业解说分析及在实作过程中...
因为要陪老婆追剧鱿鱼游戏,所以还有几个测试还没写完,但大致上这个 PHP SDK 的 API 已经开...