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]...
相關文章
相關標籤/搜索