package main
import "fmt"
func main() {
// 与数组不同,slice 的类型仅由它所包含的元素决定(不需要元素的个数)。
// 要创建一个长度非零的空 slice,需要使用内建的方法 `make`。
// 这里我们创建了一个长度为3的 `string` 类型 slice(初始化为零值)。
r := make([]string, 5)
fmt.Println("emp:", r)
//我们可以和数组一样设置得到值
r[0] = "a"
r[1] = "b"
r[2] = "c"
r[3] = "d"
r[4] = "e"
fmt.Println("set:", r)
fmt.Println("get:", r[2])
fmt.Println("len:", len(r))
// 除了基本操作外,slice 支持比数组更丰富的操作。
// 其中一个是内建的 `append`,它返回一个包含了一个或者多个新值的 slice。
// 注意由于 `append` 可能返回新的 slice,我们需要接受其返回值。
r = append(r, "d")
r = append(r, "e", "f")
fmt.Println("apd:", r)
c := make([]string, len(r))
copy(c, r)
fmt.Println("cpy:", c)
// Slice 支持通过 `slice[low:high]` 语法进行“切片”操作。
// 例如,这里得到一个包含元素 `s[2]`, `s[3]`,
// `s[4]` 的 slice。
l := r[2:5]
fmt.Println("s1l:", l)
l = r[:5]
fmt.Println("s2l:", l)
l = r[2:]
fmt.Println("s3l:", l)
t := []string{"g", "h", "i"}
fmt.Println("dcl:", t)
//slice可以组成多维数据结构
//内部的slice长度可以不一致,这和多维数组不同
twoD := make([][]int, 3)
for i := 0; i < 3; i++ {
innerLen := i + 1
twoD[i] = make([]int, innerLen)
for j := 0; j < innerLen; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d:", twoD)
}
735

被折叠的 条评论
为什么被折叠?



