package main
import "fmt"
//数组
func f1(){
//Go语言中数组是值类型,大小固定,数组之间的赋值是值拷贝,而不是地址的拷贝
//切片是引用类型,大小可变
var arr1 [3]int = [3]int{1,2,3}
arr2 := [3]int{4,5,6}
arr3 := [...]int{7,8,9}
arr4 := [3]int{}
arr5 := [...]int{}
arr6 := [9]int{5:3}
arr7 := [9]byte{5:'a'}
arr8 := [9]rune{5:'淦'}
arr9 := [9]string{2:"d", 5:"a"}
fmt.Println(arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9)
for i:=0;i<3;i++{
fmt.Println(arr1[i])
}
for index,value := range arr1{
fmt.Println(index, value)
}
}
//切片
func f2() {
//通过数组构造切片
//在切片时,若不指定第三个数,那么切片终止索引会一直到原数组的最后一个数。而如果指定了第三个数,那么切片终止索引只会到原数组的该索引值。
arr := [6]int{1, 2, 3, 4, 5, 6}
slice1 := arr[1:3]
slice2 := arr[1:3:4]
fmt.Println(arr, slice1, slice2)
fmt.Printf("%T %T %T\n", arr, slice1, slice2)
fmt.Printf("%d %d\n", len(arr), cap(arr))
fmt.Printf("%d %d\n", len(slice1), cap(slice2))
fmt.Printf("%d %d\n", len(slice1), cap(slice2))
var slice3 []int //定义一个空切片
var slice4 = []int{1, 2, 3} //定义一个切片并初始化
var slice5 = make([]int, 2, 10) //make函数构造切片
slice6 := []int{4:2} //推导申明写法
fmt.Println(slice3, slice4, slice5, slice6)
fmt.Printf("%d %d\n", len(slice3), cap(slice3))
fmt.Printf("%d %d\n", len(slice4), cap(slice4))
fmt.Printf("%d %d\n", len(slice5), cap(slice5))
fmt.Printf("%d %d\n", len(slice6), cap(slice6))
for _,value := range slice6{
fmt.Println(value)
}
//切片操作...
slice7 := []int{1, 2}
fmt.Printf("%v,%T,%d,%d\n", slice7, slice7, len(slice7), cap(slice7))
slice7 = append(slice7, 3)
fmt.Printf("%v,%T,%d,%d\n", slice7, slice7, len(slice7), cap(slice7))
slice7 = append(slice7, []int{4,5}...)
fmt.Printf("%v,%T,%d,%d\n", slice7, slice7, len(slice7), cap(slice7))
}
//字典
func f3(){
var dict1 map[string]int = map[string]int{"english":80, "chinese":90}
dict2 := map[string]int{"english":80, "chinese":90}
dict3 := make(map[string]int)
dict3["english"] = 80
dict3["chinese"] = 90
dict3["math"] = 100
delete(dict3, "english")
fmt.Printf("%v,%T,%d\n", dict1, dict1, len(dict1))
fmt.Printf("%v,%T,%d\n", dict2, dict2, len(dict2))
fmt.Printf("%v,%T,%d\n", dict3, dict3, len(dict3))
//判断key是否存在
math,ok := dict3["math"]
fmt.Println(math, ok)
other,ok := dict3["other"]
fmt.Println(other, ok)
if english,ok := dict3["english"];ok{
fmt.Println(english,"key存在")
}else{
fmt.Println(english, "key不存在")
}
//遍历字典
for key,value := range dict3{
fmt.Println(key, value)
}
for _,value := range dict3{
fmt.Println(value)
}
}
func main(){
f3()
}
GO-数组、切片、字典
最新推荐文章于 2024-08-07 16:20:51 发布