本篇內(nèi)容主要講解“怎么理解Go語(yǔ)言的map和指針”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么理解Go語(yǔ)言的map和指針”吧!

創(chuàng)新互聯(lián)公司是專業(yè)的桂林網(wǎng)站建設(shè)公司,桂林接單;提供做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行桂林網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
示例:
rec1 := make(map[string]int)
rec1["width"] = 1
rec1["height"] = 3
以上兩種聲明和初始化方式效果是一樣的,根據(jù)實(shí)際情況選用。試試訪問(wèn)不存在的Key看會(huì)怎樣?
fmt.Println(rec["point"])
結(jié)果會(huì)輸出:0,不會(huì)報(bào)錯(cuò)!它返回了int的默認(rèn)值:0。
Key是否存在
那怎么判斷一個(gè)Key到底是否存在呢?可如下實(shí)現(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ā)明了后來(lái)衍生出C語(yǔ)言的B程序語(yǔ)言,作為鼻祖,設(shè)計(jì)的新語(yǔ)言指針必須有。Go里的指針和C的指針語(yǔ)法使用上基本一樣,區(qū)別是Go里不能對(duì)指針進(jìn)行算術(shù)運(yùn)算。
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,為類型分配對(duì)應(yīng)的內(nèi)存空間,然后返回對(duì)應(yīng)內(nèi)存的指針即內(nèi)存地址,new函數(shù)相當(dāng)于下面的函數(shù)功效:
func newInt() *int {
var i int
return &i
}
x := newInt()
到此,相信大家對(duì)“怎么理解Go語(yǔ)言的map和指針”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)頁(yè)標(biāo)題:怎么理解Go語(yǔ)言的map和指針
文章來(lái)源:http://chinadenli.net/article14/pgpgde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、云服務(wù)器、域名注冊(cè)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)