发布时间:2024-12-23 03:08:13
var slice []type
其中,`slice` 是切片的名称,`type` 是切片包含的元素类型。需要注意的是,切片不需要提前指定元素个数,它会根据实际需要进行动态分配。
package main
import "fmt"
func main() {
slice := []int{1, 2, 3, 4, 5}
fmt.Println(slice[0]) // 获取切片中的第一个元素
fmt.Println(slice[2]) // 获取切片中的第三个元素
fmt.Println(slice[4]) // 获取切片中的最后一个元素
}
以上代码输出的结果依次为:1、3、5。可以看到,通过索引操作符`[]`和索引值,我们可以轻松地获取切片中的任意元素。
package main
import "fmt"
func main() {
slice := []int{1, 2, 3, 4, 5}
fmt.Println(len(slice)) // 输出切片的长度
fmt.Println(cap(slice)) // 输出切片的容量
}
以上代码输出的结果分别为:5、5。可以看到,切片的长度和容量都是5,这是因为在声明切片时,我们指定了切片中的元素个数。
package main
import "fmt"
func main() {
slice := []int{1, 2, 3, 4, 5}
fmt.Println(slice) // 输出切片的内容
fmt.Printf("%p\n", &slice[0]) // 输出切片的第一个元素的内存地址
slice = append(slice, 6) // 在切片末尾追加一个元素
fmt.Println(slice) // 输出修改后的切片的内容
fmt.Printf("%p\n", &slice[0]) // 输出修改后的切片的第一个元素的内存地址
}
以上代码输出的结果依次为:
```
[1 2 3 4 5]
0xc00008e3a0
[1 2 3 4 5 6]
0xc00008e3a0
```
可以看到,切片的指针引用的是原始数组的内存地址,当切片的容量不足以容纳新的元素时,会创建一个新的更大容量的数组,并将原始数组中的元素复制到新数组中。
package main
import "fmt"
func main() {
slice := []int{1, 2, 3, 4, 5}
fmt.Println(slice) // 输出切片的内容
slice[2] = 10 // 将切片中的第三个元素修改为10
fmt.Println(slice) // 输出修改后的切片的内容
}
以上代码输出的结果依次为:
```
[1 2 3 4 5]
[1 2 10 4 5]
```
可以看到,通过索引操作符`[]`和索引值,我们可以轻松地将新的值赋给切片中的任意元素。