新聞中心
go語言,為什么range循環(huán)取的指針地址和直接用數(shù)組取的指針地址不一樣,求指教
因為遍歷myviewlist時,實際上是復(fù)制myviewlist數(shù)組/切片中的元素到局部變量vw中。局部變量vw的地址當(dāng)然和myviewlist[0]的地址不一樣。
創(chuàng)新互聯(lián)建站專注于網(wǎng)站建設(shè)|網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋餐廳設(shè)計等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身策劃品質(zhì)網(wǎng)站。
2.range的用法
僅為個人閱讀時遇到的困惑的理解,希望友善討論
2021.6.25
《GO語言圣經(jīng)》-《GO程序設(shè)計語言》
P5
在命令行中運(yùn)行
go run main.go 一 二三 四
得到的結(jié)果
在命令行中運(yùn)行
go run main.go 一 二三 四
得到的結(jié)果
range 獲取一個范圍,
有兩個返回值,在本例中分別是 i 和 arg 。
第一個返回值 i 總是從0開始的,和 range 取范圍的值(也就是本例中的 os.Args )無關(guān)。(也就是本例中 os.Args[1:] 雖然是從 os.Args 的1值開始取的,但是在 range 中還是0)。
第二個返回值 arg 是切片的結(jié)果。
我理解的: range 將 os.Args 切成一個數(shù)組,先返回數(shù)組下標(biāo),再返回數(shù)組內(nèi)容。
如何理解Golang中的range語句
你把它理解為遍歷么,結(jié)合for循環(huán)。
假設(shè)有一個初始化好的數(shù)組(table)或者切片(slice)的table,且table長度為10:
for?i,?value?:=?range?table?{
fmt.Printf("i=%v,?value=%v\n",?i,?value)
}
則會執(zhí)行fmt.Printf10次,且這10次的【i】的值分別是從0~9,也就相當(dāng)于
for?i?:=?0;?i??len(table);?i++?{
fmt.Printf("i=%v,?value=%v\n",?i,?table[i])
}
如果把上邊的數(shù)組或者切片換成map
for?key,?value?:=?range?table?{
fmt.Pritnf("key=%v,?value=%v\n",?key,?value)
}
則類似上邊的過程把map里邊的key-value鍵值對一 一遍歷
網(wǎng)站名稱:go語言中range go語言中randintn
文章路徑:http://fisionsoft.com.cn/article/ddjpdpj.html