Go 语言切片 (Slice)
切片简介
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片 (“动态数组”)
切片操作
// 1.创建切片
var slice1 []type
//2.切片的基本操作
(1)追加
var slice1 []int
fmt.Println(slice1)
slice1 = append(slice1, 1)
fmt.Println(slice1)
(2)copy
var slice2 = make([]int, len(slice1))
copy(slice2, slice1)
fmt.Println(slice2)
fmt.Println(slice1)
(3)截取
slice3 := []int{
1, 2, 3, 4,
}
fmt.Println(slice3[:3])
Copy
切片与数组的关系
在 golang 中切片实质就是数组的一种,是对数组的一种抽象,在代码中的体现则是
数组 — 指定长度,超出范围报错
切片 — 不指定长度
Go 语言范围 (Range)
range 简介
中 range 关键字用于 for 循环中迭代 数组 (array)、切片 (slice)、通道 (channel) 或集合 (map) 的元素。在数组和切片中它返回元素的索引和索引对应的值
使用范围的语法
//遍历切片
for k, v := range slice3 {
fmt.Println(k, v)
}
Copy
range 也可以遍历字符串,返回的值不是字符串本身,而是字符对应的 unicode 码
stringTest := "test"
for k, v := range stringTest {
fmt.Println(k, v)
}
Copy
Go 语言 Map (集合)
Map 简介
键值对的集合
Map 的基本操作
//创建Map
m := make(map[string]string)
m2 := map[string]string{
"test": "test",
}
Copy
(1) 插入
m["test"] = "test"
(2)删除
delete(m2,"test")
(3)查找元素
m["test"]
Copy
Map 的遍历
for k, v := range map1 {
fmt.Println(k, v)
}
Copy
for _, v := range map1 {
fmt.Println(k, v)
}