Golang之var、new与make、简短声明
生活随笔
收集整理的這篇文章主要介紹了
Golang之var、new与make、简短声明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(1)var a *int, 在棧上分配內存
對于值類型的聲明時會自動分配內存并初始化為零值。
對于引用類型的變量,聲明時不會自動初始化(其實也可以看做初始化為零值nil),后續需要手動分配內存空間,否則會空指針或invalid memory address,
(2)new, 在堆上分配內存并初始化為零值
針對所有類型,并把內存初始化為零值,并返回指針,對于slice、map、channel會初始化為零值nil。即*T會返回一個nil,;new()在。。
(3)make,
針對引用類型的slice,map,channel,會初始化其內部元素為其零值,并且返回這三個類型本身。因為已經是引用類型,所以沒必返回他們的指針了。
make([]int,4)返回[]int(slice結構體);
make(map[string]string,4)返回map[string]string(*hmap),map變量本身其實就是一個指針,即*hmap;
make(chan string)返回chan string(*hchan),chan變量本身其實就是一個指針,即;*hchan;
(4)簡短聲明:針對所有類型,但只能用在函數內部,且必須顯式初始化。
items1 := []map[string]string{{}}總結
以上是生活随笔為你收集整理的Golang之var、new与make、简短声明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Golang之new和make
- 下一篇: Golang之 ==和deepEqual