Go03基础
1.map
map就是映射,俗称字典
1.定义 var 变量名 map[key]val = make(map[key]val)
ex: var dict map[string]string = make(map[string]string)
增: dict["name"] = "lqw"
查: dict["name"]
//一个参数去接,res :=dict[key] 存在就返回 ,不存在就返回val的零值,此时定义的val是string,key不存在,则返回字符串的零值空,假如val是int,则返回int的零值。其他的引用类型是nil。
//两个参数去接 res,b := dict[key] b返回的是 bool,存在为true,不存在就是false,res同上
改: dict["name"] = "lqw"
删: delete(dict,key) //ex:delete(dict,"name") key不存在也不会报错
map长度: len()
定义并初始化:
var dict map[string]int = map[string]int{"lqw666666":666}
循环:
for key,val:= range dict {
fmt.Printf("key:%v,val:%v\n",key,val)
} //key是 map的key,val是map的val map是无序的,python3.5以后是有序的
2.定义复杂的map:
2.1 map套map
var dict map[string]map[string]string = make(map[string]map[string]string) //map[string]map[string]string{"lqw":{"lqw":"lqw"}}
if v:=dict["name"];v==nil{
dict["name"]=make(map[string]string)
dict["name"]["lqw"] = "lqw"
}
dict["name"]["age"] = "18"
2.2 val为函数
var f_set map[string]func()int = map[string]func()int{"lqw": func()int {
fmt.Println("lqwnb")
f_set["name"] = func() int {
return 18
}
res := f_set["name"]
k:=res()
大胆的尝试就行了
3.相等性
只能和nil比较
4.是应用类型
传入函数,会改变,和python一样
2.指针
-&放在变量前,表示取该变量的地址
-* 放在类型前,表示指向该类型的指针(变量定义,指定类型时才会用到) *[3]int 和 [3]*int
-* 放在变量前,表示解引用(取出指针指向的具体的值)
func change(a *int){
(*p)=(*p)+1 //(*p) 表示取地址的值
}
func main(){
var a = 1
change(&a)
print(a) //2
}
3.可变长参数,只能在最后
a ...string
[1,2,3]...
永远不要高估自己