go slice

切片創(chuàng)建和初始化

slice := make([]string, 5)

slice := make([]int,3,5)

slice := []int{1,2,3}

如果只指定長度祠肥,那么切片的容量和長度相等时捌。也可以分別指定長度和容量

// 創(chuàng)建一個整型切片, 長度為3個元素,容量為5個元素

slice := make([]int, 3, 5)

// 創(chuàng)建一個整型切片 ,長度和容量都是4個元素

slice := []int{10, 20, 30, 40}

不允許創(chuàng)建容量小于長度的切片巩踏,

容量小于長度的切片會在編譯時報錯

// 創(chuàng)建一個整型切片 , 使其長度大于容量

slice := make([]int, 5, 3)

Compiler Error:

len larger than cap in make([]int)


slice 常用賦值方式

1 通過index賦值

s := make([]string, 3)

s[0] = "a"

s[1] = "b"

s[2] = "c"

2 通過append賦值

相對于這些基本的操作球拦,slices支持一些更加復(fù)雜的功能靠闭。有一個就是內(nèi)置的append,可以在現(xiàn)有的slice對象上添加一個或多個值坎炼。注意要對返回的append對象重新賦值阎毅,以獲取最新的添加了元素的slice對象。

? ? s = append(s, "d")

? ? s = append(s, "e", "f")

? ? fmt.Println("apd:", s)


import "sort"

var m map[int]string

var keys []int

for k := range m {

? ? keys = append(keys, k)

}

sort.Ints(keys)

for _, k := range keys {

? ? fmt.Println("Key:", k, "Value:", m[k])

}


切片迭代

// 迭代每個元素点弯,并顯示值和地址

for index, value := range slice {

  fmt.Printf("Value: %d Value-Addr: %X ElemAddr: %X\n",

    value, &value, &slice[index])

}

Output:

Value: 10 Value-Addr: 10500168 ElemAddr: 1052E100

Value: 20 Value-Addr: 10500168 ElemAddr: 1052E104

Value: 30 Value-Addr: 10500168 ElemAddr: 1052E108

Value: 40 Value-Addr: 10500168 ElemAddr: 1052E10C

因為迭代返回的變量是一個迭代過程中根據(jù)切片依次賦值的新變量,所以value的地址總是相同的矿咕。要想獲取每個元素的地址抢肛,可以使用切片變量和索引值。

如果不需要索引值碳柱,可以使用占位字符來忽略這個值捡絮,使用空白標識符(下劃線)來忽略索引值

// 創(chuàng)建一個整型切片,長度和容量都是4個元素

slice := []int{10, 20, 30, 40}

/ /迭代每個元素莲镣,并顯示其值

for _, value := range slice {

  fmt.Printf("Value: %d\n", value)

}

Output:

Value: 10

Value: 20

Value: 30

Value: 40


空切片

有時福稳,程序可能需要聲明一個值為nil的切片(也稱nil切片)。只要在聲明時不做任何初始化瑞侮,就會創(chuàng)建一個nil切片的圆。

// 創(chuàng)建nil整型切片

var slice []int

在Go語言里鼓拧,nil切片是很常見的創(chuàng)建切片的方法。nil切片可以用于很多標準庫和內(nèi)置函數(shù)越妈。在需要描述一個不存在的切片時季俩,nil切片會很好用。例如梅掠,函數(shù)要求返回一個切片但是發(fā)生異常的時候

// 使用make創(chuàng)建空的整型切片

slice := make([]int, 0)

// 使用切片字面量創(chuàng)建空的整型切片

slice := []int{}

空切片在底層數(shù)組包含0個元素酌住,也沒有分配任何存儲空間。想表示空集合時空切片很有用阎抒,例如酪我,數(shù)據(jù)庫查詢返回0個查詢結(jié)果時。

圖片發(fā)自簡書App
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末且叁,一起剝皮案震驚了整個濱河市都哭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谴古,老刑警劉巖质涛,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掰担,居然都是意外死亡汇陆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門带饱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毡代,“玉大人,你說我怎么就攤上這事勺疼〗碳牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵执庐,是天一觀的道長酪耕。 經(jīng)常有香客問我,道長轨淌,這世上最難降的妖魔是什么迂烁? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮递鹉,結(jié)果婚禮上盟步,老公的妹妹穿的比我還像新娘。我一直安慰自己躏结,他們只是感情好却盘,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般黄橘。 火紅的嫁衣襯著肌膚如雪兆览。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天旬陡,我揣著相機與錄音拓颓,去河邊找鬼。 笑死描孟,一個胖子當(dāng)著我的面吹牛驶睦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匿醒,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼场航,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了廉羔?” 一聲冷哼從身側(cè)響起溉痢,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎憋他,沒想到半個月后孩饼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡竹挡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年镀娶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揪罕。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡梯码,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出好啰,到底是詐尸還是另有隱情轩娶,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布框往,位于F島的核電站鳄抒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椰弊。R本人自食惡果不足惜嘁酿,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望男应。 院中可真熱鬧,春花似錦娱仔、人聲如沸沐飘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耐朴。三九已至借卧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筛峭,已是汗流浹背铐刘。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留影晓,地道東北人镰吵。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像挂签,于是被迫代替她去往敵國和親疤祭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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

  • 原文鏈接Slices 和 Maps 是 GO 中兩個重要的數(shù)據(jù)類型饵婆。這篇博客將記錄我關(guān)于這兩個數(shù)據(jù)結(jié)構(gòu)性能的一些關(guān)...
    freecast閱讀 449評論 0 1
  • 出處---Go編程語言 歡迎來到 Go 編程語言指南勺馆。本指南涵蓋了該語言的大部分重要特性 Go 語言的交互式簡介,...
    Tuberose閱讀 18,401評論 1 46
  • 切片是 Go 中的一種基本的數(shù)據(jù)結(jié)構(gòu)侨核,使用這種結(jié)構(gòu)可以用來管理數(shù)據(jù)集合草穆。切片的設(shè)計想法是由動態(tài)數(shù)組概念而來,為了開...
    一縷殤流化隱半邊冰霜閱讀 11,226評論 21 55
  • 我越來越不會言語了搓译, 以致快喪失語言的功能悲柱。 我講話不太注意語法, 我不太注意主語和謂語的劃分侥衬, 常常忽略了賓語诗祸。...
    野山雅歌閱讀 788評論 0 0
  • 前幾天了解了toLocaleString方法,toLocaleString()方法返回該日期對象的字符串轴总,該字符串...
    小雨小雨丶閱讀 415評論 2 1