1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| package main
import "fmt"
func main() {
//定义数组
var arr = [3]string{}//定义一个长度为3的数组
var arr1 = [3]string{"1","2","3"}//定义一个长度为3的数组并赋值,数量不能超过定义的数组长度
var arr2 = [...]string{"1","2","3","4"}//使用... 编译器对自动确定长度
fmt.Println(arr) //[]
fmt.Println(arr1)//[1 2 3]
fmt.Println(arr2)//[1 2 3 4]
//遍历数组
for k,v :=range arr2{
fmt.Println(k,v)
}
}
|
1
2
3
4
5
6
7
8
9
10
11
| //切片
var arr = [3]int{1, 2, 3} //先定义一个数组
var slice = arr[:] //对数组进行切片
var newSlice []int // 声明一个新的切片
fmt.Println(newSlice == nil) //true
//使用make来生成切片
newSlice1 := make([]int,2,10) //2:为这个切片分配2个元素的数量,10:提前分配10个元素数量,当长度超过10个时,在进行新的分配
fmt.Println(newSlice1) //[0,0]
fmt.Printf("%T %T\n", arr, slice) // [3]int,[]int 前者是数组类型,后者是切片类型
fmt.Println(arr[0:1], arr[0:2], arr[1:3]) // 对数组指定范围进行分割
fmt.Println(arr[0:0]) //重置切片
|
1
2
3
4
| // 切片添加元素
newSlice = append(newSlice,1) //newSlice [1]
newSlice = append(newSlice,2) //newSlice [1 2]
newSlice = append(newSlice,3) // newSlice [1 2 3]
|
1
2
3
4
5
6
7
8
| //切片的拷贝
//t := newSlice //这样只是单纯引用,只是把变量newSlice换成了t,地址还是一样的
//t[0] =3 //[3 2 3]
//fmt.Println(t)
copySlice :=make([]int,3)
copy(copySlice,newSlice)
newSlice[0] = 3
fmt.Println(newSlice,copySlice)
|
1
2
3
4
5
| //切片删除元素
//指定出要删除的范围,然后拼接,达到删除的效果
idx :=1
copySlice = append(copySlice[:idx],copySlice[idx+1:]...)
fmt.Println(copySlice) //[1 3] 索引1上的2被删除了
|
1
2
3
4
5
6
7
8
| //创建map ,,类似于python中的字典
m := make(map[string]string) //使用make创建map
m1 := map[string]string{ //创建并赋值
"idx1":"1",
"idx2":"2",
}
fmt.Println(m)
fmt.Println(m1)
|
1
2
3
| //使用delete删除键值对
delete(m1,"idx1") //删除键为"idx1"
fmt.Println(m1)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| //列表
l := list.New() //初始化代码
handle :=l.PushFront("start") //列表前插入元素
l.InsertAfter("middle",handle) //指定一个句柄,在句柄后插入元素
l.PushBack("end")//列表后插入元素
//遍历列表
for i:=l.Front();i!=nil;i=i.Next(){
fmt.Println(i.Value)
}
l.Remove(handle)//删除列表中的元素
//遍历列表
for i:=l.Front();i!=nil;i=i.Next(){
fmt.Println(i.Value)
}
|