Golang基础(3):数组,切片和字典
一:数组
数组是一个具有相同类型元素,固定长度的有序集合,一般定义如下:
var x [5]int
表示数组是一个整数型数组,长度为5
数组的几种定义方式
a: var来定义数组,然后依次赋值
package main import "fmt" func main() { var x [4]int x[0] = 1 x[1] = 12 x[2] = 4 x[3] = 19 var sum int for _, elem := range x { sum += elem } fmt.Println(sum) /** 我们用range这个go语言内置的方法来遍历数组,其实range也可以用在切片和字典上面 当你对一个返回值不感兴趣时候,可以用下划线 _ 来忽略这个值 **/ }
b: 第二种定义方法
package main import "fmt" func main() { var x = [4]int{1, 12, 4} x[3] = 19 var sum int for _, i := range x { sum += i } fmt.Println(sum) }
c: 第三种定义
//如果我们不能显示知道数组长度,也可以用 ... 来代替长度
func main() { var x = [...]string{ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", // 这里最后如果没有逗号,那么西面的大括号{要紧挨这个Friday,注意 } for _, day := range x { fmt.Println(day) } }
二:切片
上面数组是有固定长度的有序集合,也就是说一段数组长度定义了,你也无法向里面添加元素了。
当元素个数不确定时候,我们又想添加元素进去,这时候数组就不合适了,这时候切片slice登场了
切片和数组类似,切片有一个优点,那就是切片长度是可变的
a: make定义切片
package main import "fmt" func main() { var arr1 = make([]int, 4) fmt.Println("Capcity:", cap(arr1), "Length:", len(arr1)) var arr2 = make([]int, 5, 10) fmt.Println("Captity:", cap(arr2), "Length:", len(arr2)) for i := 0; i < len(arr1); i++ { arr1[i] = i } fmt.Println(arr1) for i := 0; i < len(arr2); i++ { arr2[i] = i } fmt.Println(arr2) }
用make定义切片
1:只指定长度,这个时候切片的容量和长度相同
2:另外一种同时指定切片的容量和长度
b: 用数组定义切片
package main import "fmt" func main() { var arr1 = [4]int{1, 23, 2, 3} var s1 = arr1[1:2] var s2 = arr1[:3] var s3 = arr1[:] fmt.Println(s1, s2, s3) }
c: append给切片追加元素
package main import "fmt" func main() { var arr1 = make([]int, 4, 10) for i := 0; i < len(arr1); i++ { arr1[i] = i } arr1 = append(arr1, 1, 2, 5, 30) fmt.Println("Capacity: ", cap(arr1), "Length:", len(arr1)) fmt.Println(arr1) }
三:字典
字典是一个无序的,键值对的集合
a: 第一种定义:
package main import "fmt" func main() { var x = map[string]string{ "A": "apple", "B": "banana", "O": "orange", "P": "pear", } for key, val := range x { fmt.Println("key:", key, "val:", val) } }
b: 第二种make定义
package main import "fmt" func main() { var x map[string]string x = make(map[string]string) //上面的2行还可以合成一行 x:=make(map[string]string) x["A"] = "apple" x["B"] = "banana" x["O"] = "orange" x["P"] = "pear" for key, val := range x { fmt.Println("key:", key, "val:", val) } }
== just do it ==