golang面試題之關(guān)于range遍歷

無論是普通的for循環(huán)开仰,還是for range遍歷其定義的局部變量都會重復(fù)使用

  • 且看下例
type person struct {
    name string
    age int
}

func main() {
    ma := []person{
        person{"zhangsan", 11},
        person{"lisi", 13},
        person{"wangwu", 12},
    }
    mb := []*person{}
    for _, v := range ma {
        mb = append(mb, &v)

    }
    fmt.Println(mb[0], mb[1], mb[2])
}

輸出結(jié)果:

&{wangwu 12} &{wangwu 12} &{wangwu 12}

Process finished with exit code 0

為什么是這個結(jié)果呢丧裁, 因為例子中直接取了&v的地址讼撒,前文所說, for中定義的局部變量都會重復(fù)使用再菊, 所以導(dǎo)致mb中的三個結(jié)果都指向了v的地址轧坎。

那么如何避免此類問題:

  • 在遍歷中不要使用局部變量的地址進行操作宏邮, 如下:
// 上例中的for range循環(huán)內(nèi)部改為:
       for _, v := range ma {
        val := v
        mb = append(mb, &val)

    }
  • 上例ma變量定義成[]*person 類型, 然后 在for range中可以進行直接賦值操作:
func main() {
    ma := []*person{
        &person{"zhangsan", 11},
        &person{"lisi", 13},
        &person{"wangwu", 12},
    }
    mb := []*person{}
    for _, v := range ma {
        val := v
        mb = append(mb, val)
    }
    fmt.Println(mb[0], mb[1], mb[2])
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眶根,一起剝皮案震驚了整個濱河市蜀铲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌属百,老刑警劉巖记劝,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異族扰,居然都是意外死亡厌丑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門渔呵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怒竿,“玉大人,你說我怎么就攤上這事扩氢「郏” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵录豺,是天一觀的道長朦肘。 經(jīng)常有香客問我,道長双饥,這世上最難降的妖魔是什么媒抠? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮咏花,結(jié)果婚禮上趴生,老公的妹妹穿的比我還像新娘。我一直安慰自己昏翰,他們只是感情好苍匆,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棚菊,像睡著了一般锉桑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窍株,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天民轴,我揣著相機與錄音,去河邊找鬼球订。 笑死后裸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的冒滩。 我是一名探鬼主播微驶,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼开睡!你這毒婦竟也來了因苹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤篇恒,失蹤者是張志新(化名)和其女友劉穎扶檐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胁艰,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡款筑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腾么。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奈梳。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖解虱,靈堂內(nèi)的尸體忽然破棺而出攘须,到底是詐尸還是另有隱情,我是刑警寧澤殴泰,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布于宙,位于F島的核電站,受9級特大地震影響艰匙,放射性物質(zhì)發(fā)生泄漏限煞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一员凝、第九天 我趴在偏房一處隱蔽的房頂上張望署驻。 院中可真熱鬧,春花似錦健霹、人聲如沸旺上。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宣吱。三九已至,卻和暖如春瞳别,著一層夾襖步出監(jiān)牢的瞬間征候,已是汗流浹背杭攻。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疤坝,地道東北人兆解。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像跑揉,于是被迫代替她去往敵國和親锅睛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,089評論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5历谍? 答:HTML5是最新的HTML標準现拒。 注意:講述HT...
    kismetajun閱讀 27,423評論 1 45
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,744評論 0 38
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評論 0 5
  • 前些時日,與友人一起用膳望侈,餐桌上有一美味佳肴甲魚湯印蔬,甚得眾人喜愛。而我一邊食用甲魚肉甜无,一邊品嘗甲魚湯扛点,一邊陷入沉思...
    譜哥哥閱讀 313評論 0 0