新聞中心
本篇內(nèi)容主要講解“怎么理解Go語言的map和指針”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解Go語言的map和指針”吧!
示例:
rec1 := make(map[string]int)
rec1["width"] = 1
rec1["height"] = 3
以上兩種聲明和初始化方式效果是一樣的,根據(jù)實際情況選用。試試訪問不存在的Key看會怎樣?
fmt.Println(rec["point"])
結(jié)果會輸出:0,不會報錯!它返回了int的默認值:0。
Key是否存在
那怎么判斷一個Key到底是否存在呢?可如下實現(xiàn):
if val, ok := rec["point"]; ok {
fmt.Println(val)
} else {
fmt.Println("key point not exists")
}
遍歷
for k, v := range rec {
fmt.Println(k, "=", v)
}
刪除Key
delete(rec, "width")
if val, ok := rec["width"]; ok {
fmt.Println(val)
} else {
fmt.Println("key width has been deleted")
}
指針
Go作者之一是Thompson,他發(fā)明了后來衍生出C語言的B程序語言,作為鼻祖,設(shè)計的新語言指針必須有。Go里的指針和C的指針語法使用上基本一樣,區(qū)別是Go里不能對指針進行算術(shù)運算。
func pointers() {
x := new(int)
*x = 2
fmt.Println(reflect.TypeOf(x), *x, x)
y := 2
fmt.Println(&y, reflect.TypeOf(&y), reflect.TypeOf(y))
pointParam(&y)
}
func pointerParam(p *int) {
fmt.Println(reflect.TypeOf(p), p, *p)
}
上面的new可以看成是C里面的malloc,為類型分配對應(yīng)的內(nèi)存空間,然后返回對應(yīng)內(nèi)存的指針即內(nèi)存地址,new函數(shù)相當于下面的函數(shù)功效:
func newInt() *int {
var i int
return &i
}
x := newInt()
到此,相信大家對“怎么理解Go語言的map和指針”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
本文題目:怎么理解Go語言的map和指針-創(chuàng)新互聯(lián)
文章鏈接:http://fisionsoft.com.cn/article/dgchjg.html