Golang:make,slice和append的注意細(xì)節(jié)

使用append向slice追加元素遇到的坑月劈,在此總結(jié)一下度迂。
一,細(xì)節(jié)1

urls := make(map[string]string, 3) 
urls["baidu"] = "www.baidu.com"
urls["google"] = "www.google.com"
urls["csdn"] = "www.csdn.net"
names := make([]string, len(urls))
for key, _ := range urls {
    names = append(names, key)
    }
fmt.Println(names,len(names))

輸出結(jié)果
[ csdn baidu google] 6
前面多了幾個(gè)空格猜揪,長(zhǎng)度為6惭墓,與預(yù)期的結(jié)果不一致
修改代碼

names := make([]string, 0)
for key, _ := range urls {
    names = append(names, key)
}
fmt.Println(names,len(names))

或者

var names []string
for key, _ := range urls {
    names = append(names, key)
}
fmt.Println(names,len(names))

輸出結(jié)果
[baidu google csdn] 3
總結(jié):append無論如何都是從slice的尾部開始追加數(shù)據(jù),原來的slice只有3個(gè)長(zhǎng)度而姐,現(xiàn)在每一次append都要重新分配一次內(nèi)存
二腊凶、細(xì)節(jié)2

s1 := []int{1, 2, 3}
s2 := []int{4, 5}
s1 = append(s1, s2)
fmt.Println(s1)

程序報(bào)錯(cuò):cannot use s2 (type []int) as type int in append
修改為:

s1 := []int{1, 2, 3}
s2 := []int{4, 5}
s1 = append(s1, s2...)
fmt.Println(s1)

輸出結(jié)果:
[1 2 3 4 5]
總結(jié):append切片時(shí)候別漏了'...'
三、細(xì)節(jié)3
new與make區(qū)別:
new只分配內(nèi)存它并不初始化內(nèi)存,只是將其置零钧萍。new(T)會(huì)為T類型的新項(xiàng)目褐缠,分配被置零的存儲(chǔ),并且返回它的地址风瘦,一個(gè)類型為T的值队魏,也即其返回一個(gè)指向新分配的類型為T的指針,這個(gè)指針指向的內(nèi)容的值為零(zero value)万搔,注意并不是指針為零胡桨。比如,對(duì)于bool類型瞬雹,零值為false昧谊;int的零值為0;string的零值是空字符串酗捌。
make用于slice揽浙,map,和channel的初始化意敛,返回一個(gè)初始化的(而不是置零)馅巷,類型為T的值(而不是
T)。之所以有所不同草姻,是因?yàn)檫@三個(gè)類型是使用前必須初始化的數(shù)據(jù)結(jié)構(gòu)钓猬。例如,slice是一個(gè)三元描述符撩独,包含一個(gè)指向數(shù)據(jù)(在數(shù)組中)的指針敞曹,長(zhǎng)度,以及容量综膀,在這些項(xiàng)被初始化之前澳迫,slice都是nil的。對(duì)于slice剧劝,map和channel橄登,make初始化這些內(nèi)部數(shù)據(jù)結(jié)構(gòu),并準(zhǔn)備好可用的值讥此。

p := new([]int) //p == nil; with len and cap 0拢锹,被置零的slice結(jié)構(gòu)體的指針,即指向值為nil的slice的指針
fmt.Println(p)

v := make([]int, 10, 50) // v is initialed with len 10, cap 50
fmt.Println(v)

輸出結(jié)果:
&[]
[0 0 0 0 0 0 0 0 0 0]

new1 := new([2]int)
fmt.Println(new1)
new1[0] = 1
new1[1] = 2
fmt.Println(new1)

輸出結(jié)果:
&[0 0]
&[1 2]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萄喳,一起剝皮案震驚了整個(gè)濱河市卒稳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌他巨,老刑警劉巖充坑,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件减江,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捻爷,警方通過查閱死者的電腦和手機(jī)您市,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來役衡,“玉大人,你說我怎么就攤上這事薪棒∈中” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵俐芯,是天一觀的道長(zhǎng)棵介。 經(jīng)常有香客問我,道長(zhǎng)吧史,這世上最難降的妖魔是什么邮辽? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮贸营,結(jié)果婚禮上吨述,老公的妹妹穿的比我還像新娘。我一直安慰自己钞脂,他們只是感情好揣云,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冰啃,像睡著了一般邓夕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阎毅,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天焚刚,我揣著相機(jī)與錄音,去河邊找鬼扇调。 笑死矿咕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狼钮。 我是一名探鬼主播痴腌,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼燃领!你這毒婦竟也來了士聪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤猛蔽,失蹤者是張志新(化名)和其女友劉穎剥悟,沒想到半個(gè)月后灵寺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡区岗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年略板,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慈缔。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叮称,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藐鹤,到底是詐尸還是另有隱情瓤檐,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布娱节,位于F島的核電站挠蛉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏肄满。R本人自食惡果不足惜谴古,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稠歉。 院中可真熱鬧掰担,春花似錦、人聲如沸怒炸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽横媚。三九已至纠炮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灯蝴,已是汗流浹背恢口。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穷躁,地道東北人耕肩。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像问潭,于是被迫代替她去往敵國和親猿诸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,280評(píng)論 25 707
  • 用兩張圖告訴你狡忙,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料梳虽? 從這篇文章中你...
    hw1212閱讀 12,744評(píng)論 2 59
  • 1 給家里打電話,爸爸媽媽說:“照顧好自己啊灾茁,別委屈自己窜觉」日ǎ” 平時(shí)和同學(xué)寒暄,結(jié)束聊天也是相互囑咐:“照顧好自己禀挫,...
    梁朝月閱讀 611評(píng)論 0 0
  • 3一21,2017年6月2日砰左,讓愛醒來踐行日記 1匿醒,空閑時(shí)間時(shí),就及時(shí)做分享(大群+小群)菜职。 2,我體會(huì)到"允許的...
    為_钙烀觯慧閱讀 232評(píng)論 0 0
  • 日子就在我每天寫的流水賬中匆匆而去酬核,夏還未走,秋就來了适室。 以前從不關(guān)心什么節(jié)氣嫡意,只是在老一輩口中得知各種節(jié)氣民俗,...
    盈盈她說閱讀 356評(píng)論 0 2