(一)go包
(三)数据类型
数组:存储某一类型的数据集合,数组长度固定,在存储中地址是连续的
func main() { var aa [5]int64 for i,_ := range aa { fmt.Printf(“%pn”,&aa[i]) } } 输出: 0xc042039f80 0xc042039f88 0xc042039f90 0xc042039f98 0xc042039fa0
指针数组: [5]*int 数组指针:*[5]int 遍历数组:for …range 数组参数:数组很大时,可考虑使用数组指针传递,但存在数组值被修改的可能行 作为参数传递:会复制一个副本,在函数内的操作不会影响原数组的值
切片:可理解为动态数组,底层基于数组,包含3个字段的数据结构,一个是指向底层数组的指针,一个切片的长度(len),一个是切片的容量(cap) 初始化:make
格式:make([]type,len,cap),cap>=len 例如:slice:=make([]int,5,10) slice2:=[]int{1,2,3,4,5}//len=cap
nil切片:指向底层数组的指针为nil,即没有指向任何内存空间
var slice []int
空切片:指向底层数组的指针是个地址,地址对应的内存为0
slice:=[]int{}
append:切片追加,返回的切片可能是原来的切片也可能是新的切片,如果追加的内容
作为参数传递:会复制一个切片副本(三个字段,指针,len和cap),但是还是共用一个底层数据,在函数内的操作会影响原来切片的值
map:key-value对集合,无序 初始化:
//使用make初始化 person := make(map[string]interface{}) person[“name”] = “dawing” person[“age”] = 20 fmt.Println(person) //或者直接初始化 person:=map[string]interface{}{“name”:”dawing”,”age”:20} //如果不知道初始值,则为一个空的map person:=map[string]interface{}{}
使用map
//获取map值(如果该键值不存在,则返回nil) name:=person[“name”] //判断某个键值是否存在 _,exists := person2[“name”] //exists为true表示存在,false表示不存在 //修改值(如果该键值不存在,则会创建) person[“name”]=”dazuming” //删除键值 delete(person,”name”)
作为参数传递:传递的不是副本,在函数内的操作会影响原来的值
(四)go类型
基础类型 包括:数值(整形、浮点型)、字符型、布尔型
引用类型 包括:切片、map、接口、函数类型、chan 实际操作中使用的是一个指向底层的指针,修改该指针指向的值,会改变原来的值 自定义类型(结构类型) 包括:结构体
type person struct { age int name string }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|