在 Go 语言中,没有直接与 Python 的 `list` 完全对应的数据结构,但最接近的是 **切片(slice)**。切片是 Go 中用于存储和操作一系列元素的动态数组,类似于 Python 的 `list`。
### 切片的基本操作
1. **创建切片**:
// 创建一个空的切片 var mySlice []int // 使用 make 创建切片 mySlice := make([]int, 0) // 初始长度为 0 mySlice := make([]int, 5) // 初始长度为 5 // 直接初始化切片 mySlice := []int{1, 2, 3, 4, 5}
2. **添加元素**:
mySlice = append(mySlice, 6) // 添加一个元素 mySlice = append(mySlice, 7, 8, 9) // 添加多个元素
3. **访问元素**:
fmt.Println(mySlice[0]) // 访问第一个元素
4. **修改元素**:
mySlice[0] = 10 // 修改第一个元素
5. **切片操作**:
subSlice := mySlice[1:3] // 获取从索引 1 到 2 的子切片
6. **获取长度和容量**:
length := len(mySlice) // 获取切片长度 capacity := cap(mySlice) // 获取切片容量
7. **遍历切片**:
for index, value := range mySlice { fmt.Println(index, value) }
### 与 Python `list` 的区别
– **类型固定**:Go 的切片只能存储相同类型的元素,而 Python 的 `list` 可以存储不同类型的元素。
– **动态扩展**:Go 的切片通过 `append` 动态扩展,类似于 Python 的 `list`,但 Go 的切片有容量(capacity)的概念。
– **性能**:Go 的切片在性能上通常优于 Python 的 `list`,因为 Go 是编译型语言,而 Python 是解释型语言。
### 示例代码
package main import "fmt" func main() { // 创建一个切片 mySlice := []int{1, 2, 3, 4, 5} // 添加元素 mySlice = append(mySlice, 6) // 访问元素 fmt.Println(mySlice[0]) // 输出: 1 // 修改元素 mySlice[0] = 10 fmt.Println(mySlice) // 输出: [10 2 3 4 5 6] // 切片操作 subSlice := mySlice[1:3] fmt.Println(subSlice) // 输出: [2 3] // 遍历切片 for index, value := range mySlice { fmt.Println(index, value) } }
通过这些操作,你可以在 Go 中使用切片来实现类似于 Python `list` 的功能。