Go的数据结构
- 数组
- slice
- map
以上除了slice我们都比较熟悉,slice切片可以理解成熟悉动态的数组,并不需要我们使用定义长度
老规矩直接上例子
数组
- 注意使用两种定义方式,一般倾向于后者
package main
import (
"fmt"
)
func DefineArray(){
// 定义一个数组
var x [5] int
x[0] = 1
x[2] = 2
x[3] = 4
fmt.Println("定义的数组值为:", x)
// 直接定义未知长度的数组
result := [...]int{5,6,7,8}
fmt.Println(result)
func main() {
DefineArray()
}
- 此处注意的就是我们想要定一个未知长度的时候result := […]int{5,6,7,8} 这个很经常使用
Slice
package main
import (
"fmt"
)
func DefineSlice(){
// 定义一个slice
var x [] int
// append数据
result := append(x,2,3,4)
fmt.Println("该slice的值为:", result) // 输出值
fmt.Println("该slice长度为:", len(result)) // 输出长度
fmt.Println("该slice的初始化长度为:", cap(result))
// 直接定义slice
test := [] int {1,2,3,4}
fmt.Println(test)
// 选择固定的索引内的数值
numbers := []int{5,6,7,8}
fmt.Println("numbers[1:4] ==", numbers[1:4])
}
func main() {
)
DefineSlice()
}
- 这里介绍了slice的几个简单的用法
- 类似python 切片的操作
numbers := []int{5,6,7,8}
fmt.Println("numbers[1:4] ==", numbers[1:4]) // 取1-4索引里面的这是
// output:[6 7 8]
- 常用的append方法添加值
var x [] int
// append数据
result := append(x,2,3,4)
// output:[2 3 4]
Map
map众所周知 以查找速度闻名,如果你发现自己查找慢了,直接上map那速度翻的不止一倍
package main
import (
"fmt"
)
func DefineMap() {
// 定义一个map
var x map[string]int
x = make(map[string]int) // 初始化map,如果不初始化会创建一个nil map ,这种类型无法保存键值对
x ["key1"] = 2
x ["key2"] = 3
fmt.Println(x)
// 直接顶一个map
// make(map[key的数据类型][值的数据类型])
result := make(map[string]int)
result["key2"] = 4
result["key3"] = 5
fmt.Println(x)
// 遍历map的key
for key, value := range result{
fmt.Printf("key:%v, value:%v\n",key,value)
}
// 判断是否存在
val, exist := result["key3"] // 返回的value 是key对应的值,默认不存在为0, exist= True代表此key存在, 否则则为False
fmt.Println(val, exist)
// 删除元素
delete(result, "key3")
fmt.Println(result)
}
func main() {
//DefineSlice()
//DefineArray()
//DefineMap()
DefineSlice()
}
output:
map[key1:2 key2:3]
map[key1:2 key2:3]
key:key2, value:4
key:key3, value:5
5 true
map[key2:4]