DAY6 GOLANG (六) 數(shù)組與切片

數(shù)組的定義

var 數(shù)組名 [ 數(shù)組大小]數(shù)據(jù)類型
var a [5]int

數(shù)組必須定義長(zhǎng)度,且一個(gè)數(shù)組不能動(dòng)態(tài)改變長(zhǎng)度。不要擔(dān)心這個(gè)限制,切片(slice)可以彌補(bǔ)這個(gè)不足

四種初始化數(shù)組的方式

var numArr01 [3]int =[3]int{1, 2, 3}
var numArr02 = [3]int{5, 6, 7}
//這里的 [...]是規(guī)定的寫法
var numArr03 = [...]int{8, 9 ,10}
var numArr04 = [...]int{1: 800, 0: 900, 2:999}

直接賦值: var 數(shù)組名 [大小] [類型]=[大小] [類型]{{初值汗洒。父款。瞻坝。}{初值。炕吸。勉痴。瀑罗。}}

arr := [ ] [ ] int {{123}{356}}

數(shù)組是值類型

在 Go 中數(shù)組是值類型而不是引用類型乡话。這意味著當(dāng)數(shù)組變量被賦值時(shí)闸婴,將會(huì)獲得原數(shù)組(:也就是等號(hào)右面的數(shù)組)的拷貝榜配。新數(shù)組中元素的改變不會(huì)影響原數(shù)組中元素的值弃理。
值類型就是現(xiàn)金,要用直接用辆苔;引用類型是存折算灸,要用還得先去銀行取現(xiàn)。
值類型與引用類型的區(qū)別在于值類型的變量直接包含其數(shù)據(jù)驻啤,而引用類型的變量則存儲(chǔ)對(duì)象引用菲驴。

對(duì)于值類型,每個(gè)變量都有自己的數(shù)據(jù)副本骑冗,對(duì)一個(gè)變量的操作不可能影響另一個(gè)變量赊瞬。
對(duì)于引用類型,兩個(gè)變量可能引用同一個(gè)對(duì)象贼涩,因此對(duì)一個(gè)變量的操作可能影響另一個(gè)變量所引用的對(duì)象巧涧。

值類型 : 基本數(shù)據(jù)類型int、float遥倦、bool谤绳、string以及數(shù)組和struct。
引用類型:指針袒哥、slice缩筛、map、chan等都是引用類型统诺。

值類型:變量直接存儲(chǔ),內(nèi)存通常在棧中分配疑俭。
引用類型:變量存儲(chǔ)的是一個(gè)地址粮呢,這個(gè)地址存儲(chǔ)最終的值。內(nèi)存通常在堆上分配钞艇。通過(guò)GC回收啄寡。

通常在函數(shù)中轉(zhuǎn)入指針效率比較高,因?yàn)榉椒ㄖ械膮?shù)是需要進(jìn)行拷貝的哩照,拷貝指針的效率比較高挺物,要是一個(gè)大的接口體的話拷貝的效率就比較低。

同樣的飘弧,如果將數(shù)組作為參數(shù)傳遞給函數(shù)识藤,仍然是值傳遞砚著,在函數(shù)中對(duì)(作為參數(shù)傳入的)數(shù)組的修改不會(huì)造成原數(shù)組的改變。

數(shù)組的長(zhǎng)度

內(nèi)置函數(shù) len 用于獲取數(shù)組的長(zhǎng)度:len(a)

數(shù)組的遍歷

1.普通方式遍歷

func main() {
    a := [...]float64{67.7, 89.8, 21, 78}
    for i := 0; i < len(a); i++ { 
        fmt.Printf("%d th element of a is %.2f\n", i, a[i])
    }
}

2.for-range 結(jié)構(gòu)遍歷

func main() {
    a := [...]float64{67.7, 89.8, 21, 78}
    for i, v := range a {
        fmt.Printf("%d the element of a is %.2f\n", i, v)
    }
}

range 返回?cái)?shù)組的索引和索引對(duì)應(yīng)的值

多維數(shù)組

func printarray(a [3][2]string) {  
    for _, v1 := range a {
        for _, v2 := range v1 {
            fmt.Printf("%s ", v2)
        }
        fmt.Printf("\n")
    }
}

func main() {  
    a := [3][2]string{
        {"lion", "tiger"},
        {"cat", "dog"},
        {"pigeon", "peacock"}, //this comma is necessary. The compiler will complain if you omit this comma
    }
    printarray(a)
    var b [3][2]string
    b[0][0] = "apple"
    b[0][1] = "samsung"
    b[1][0] = "microsoft"
    b[1][1] = "google"
    b[2][0] = "AT&T"
    b[2][1] = "T-Mobile"
    fmt.Printf("\n")
    printarray(b)
}

上利用速記聲明創(chuàng)建了一個(gè)二維數(shù)組 a痴昧,逗號(hào)是必須的稽穆,這是因?yàn)樵~法分析器會(huì)根據(jù)一些簡(jiǎn)單的規(guī)則自動(dòng)插入分號(hào)。
在第 23 行聲明了另一個(gè)二維數(shù)組 b赶撰,并通過(guò)索引的方式給數(shù)組 b 中的每一個(gè)元素賦值舌镶。這是初始化二維數(shù)組的另一種方式。聲明的函數(shù) printarray 通過(guò)兩個(gè)嵌套的 range for 打印二維數(shù)組的內(nèi)容豪娜。

遍歷一次的話就是遍歷出里面的數(shù)組餐胀,要是想遍歷出所有的元素要進(jìn)行嵌套循環(huán)
輸出為:

lion tiger  
cat dog  
pigeon peacock 

apple samsung  
microsoft google  
AT&T T-Mobile

基本語(yǔ)法
for index ,value := range arry01{
}
index 返回的是數(shù)組的下標(biāo)瘤载,value是該下標(biāo)對(duì)應(yīng)的值否灾。

  • 二維數(shù)組的遍歷

    • for ---- range

      for i , v := range arr{----------- v 是一個(gè)一維數(shù)組

      for j , v1 := range v{

      ..............................................

      }

      }

    • 雙重for循環(huán):

      for i:=0;i<len(arr);i++{

      for j:=0;j<len (arr[ i ]);j++{

      ................................................

      }

      }

切片

數(shù)組的長(zhǎng)度是固定的,沒(méi)辦法動(dòng)態(tài)增加數(shù)組的長(zhǎng)度惕虑。而切片卻沒(méi)有這個(gè)限制坟冲,切片更靈活,實(shí)際上在 Go 中溃蔫,切片比數(shù)組更為常見健提。切片并不存儲(chǔ)任何元素而只是對(duì)現(xiàn)有數(shù)組的引用。切片[ ]中沒(méi)數(shù)字伟叛,數(shù)組中[ ]內(nèi)有數(shù)字私痹。

方式一

func main() {  
    a := [5]int{76, 77, 78, 79, 80}
    var b []int = a[1:4] //creates a slice from a[1] to a[3]
    fmt.Println(b)
}

通過(guò) a[start:end] 這樣的語(yǔ)法創(chuàng)建了一個(gè)從 a[start]a[end -1] 的切片。在上面的程序中统刮,第 9 行 a[1:4] 創(chuàng)建了一個(gè)從 a[1]a[3] 的切片紊遵。因此 b 的值為:[77 78 79]

方式二

func main() {  
    c := []int{6, 7, 8} //creates and array and returns a slice reference
    fmt.Println(c)
}

在上面的程序中侥蒙,第 9 行 c := []int{6, 7, 8} 創(chuàng)建了一個(gè)長(zhǎng)度為 3 的 int 數(shù)組暗膜,并返回一個(gè)切片給 c。

修改切片

切片本身不包含任何數(shù)據(jù)鞭衩。它僅僅是底層數(shù)組的一個(gè)上層表示学搜。對(duì)切片進(jìn)行的任何修改都將反映在底層數(shù)組中。

func main() {  
    darr := [...]int{57, 89, 90, 82, 100, 78, 67, 69, 59}
    dslice := darr[2:5]
    fmt.Println("array before",darr)
    for i := range dslice {
        dslice[i]++
    }
    fmt.Println("array after",darr) 
}

上面程序的第 9 行论衍,我們創(chuàng)建了一個(gè)從 darr[2]darr[5] 的切片 dslice瑞佩。for 循環(huán)將這些元素值加 1。執(zhí)行完 for 語(yǔ)句之后打印原數(shù)組的值坯台,我們可以看到原數(shù)組的值被改變了炬丸。程序輸出如下:

array before [57 89 90 82 100 78 67 69 59]  
array after [57 89 91 83 101 78 67 69 59]

當(dāng)若干個(gè)切片共享同一個(gè)底層數(shù)組時(shí),對(duì)每一個(gè)切片的修改都會(huì)反映在底層數(shù)組中


func main() {  
    numa := [3]int{78, 79 ,80}
    nums1 := numa[:] //creates a slice which contains all elements of the array
    nums2 := numa[:]
    fmt.Println("array before change 1",numa)
    nums1[0] = 100
    fmt.Println("array after modification to slice nums1", numa)
    nums2[1] = 101
    fmt.Println("array after modification to slice nums2", numa)
}

可以看到蜒蕾,在第 9 行稠炬, numa[:] 中缺少了開始和結(jié)束的索引值焕阿,這種情況下開始和結(jié)束的索引值默認(rèn)為 0len(numa)。這里 nums1nums2 共享了同一個(gè)數(shù)組酸纲。程序的輸出為:

array before change 1 [78 79 80]  
array after modification to slice nums1 [100 79 80]  
array after modification to slice nums2 [100 101 80]

從輸出結(jié)果可以看出捣鲸,當(dāng)多個(gè)切片共享同一個(gè)數(shù)組時(shí),對(duì)每一個(gè)切片的修改都將會(huì)反映到這個(gè)數(shù)組中闽坡。

切片的長(zhǎng)度和容量

切片的長(zhǎng)度是指切片中元素的個(gè)數(shù)栽惶。切片的容量是指從切片的起始元素開始到其底層數(shù)組中的最后一個(gè)元素的個(gè)數(shù)。

func main() {  
    fruitarray := [...]string{"apple", "orange", "grape", "mango", "water melon", "pine apple", "chikoo"}
    fruitslice := fruitarray[1:3]
    fmt.Printf("length of slice %d capacity %d", len(fruitslice), cap(fruitslice)) //length of is 2 and capacity is 6
}

譯者注:使用內(nèi)置函數(shù) cap 返回切片的容量疾嗅。

func main() {  
    fruitarray := [...]string{"apple", "orange", "grape", "mango", "water melon", "pine apple", "chikoo"}
    fruitslice := fruitarray[1:3]
    fmt.Printf("length of slice %d capacity %d", len(fruitslice), cap(fruitslice)) //length of is 2 and capacity is 6
}

在上面的程序中外厂,創(chuàng)建了一個(gè)以 fruitarray 為底層數(shù)組,索引從 13 的切片 fruitslice代承。因此 fruitslice 長(zhǎng)度為2汁蝶。

fruitarray 的長(zhǎng)度是 7。fruiteslice 是從 fruitarray 的索引 1 開始的论悴。因此 fruiteslice 的容量是從 fruitarray 的第 1 個(gè)元素開始算起的數(shù)組中的元素個(gè)數(shù)掖棉,這個(gè)值是 6。因此 fruitslice 的容量是 6膀估。程序的輸出為:length of slice 2 capacity 6幔亥。

切片的長(zhǎng)度可以動(dòng)態(tài)的改變(最大為其容量)。任何超出最大容量的操作都會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤察纯。

用make創(chuàng)建切片

內(nèi)置函數(shù) func make([]T, len, cap) []T 可以用來(lái)創(chuàng)建切片帕棉,該函數(shù)接受長(zhǎng)度和容量作為參數(shù),返回切片饼记。容量是可選的香伴,默認(rèn)與長(zhǎng)度相同。使用 make 函數(shù)將會(huì)創(chuàng)建一個(gè)數(shù)組并返回它的切片具则。

func main() {  
    i := make([]int, 5, 5)
    fmt.Println(i)
}

make 創(chuàng)建的切片的元素值默認(rèn)為 0 值即纲。上面的程序輸出為:[0 0 0 0 0]

追加元素到切片

我們已經(jīng)知道數(shù)組是固定長(zhǎng)度的博肋,它們的長(zhǎng)度不能動(dòng)態(tài)增加低斋。而切片是動(dòng)態(tài)的,可以使用內(nèi)置函數(shù) append 添加元素到切片束昵。append 的函數(shù)原型為:append(s []T, x ...T) []T拔稳。

x …T 表示 append 函數(shù)可以接受的參數(shù)個(gè)數(shù)是可變的葛峻。這種函數(shù)叫做變參函數(shù)锹雏。

你可能會(huì)問(wèn)一個(gè)問(wèn)題:如果切片是建立在數(shù)組之上的,而數(shù)組本身不能改變長(zhǎng)度术奖,那么切片是如何動(dòng)態(tài)改變長(zhǎng)度的呢礁遵?實(shí)際發(fā)生的情況是轻绞,當(dāng)新元素通過(guò)調(diào)用 append 函數(shù)追加到切片末尾時(shí),如果超出了容量佣耐,append 內(nèi)部會(huì)創(chuàng)建一個(gè)新的數(shù)組政勃。并將原有數(shù)組的元素被拷貝給這個(gè)新的數(shù)組,最后返回建立在這個(gè)新數(shù)組上的切片兼砖。這個(gè)新切片的容量是舊切片的二倍(譯者注:當(dāng)超出切片的容量時(shí)奸远,append 將會(huì)在其內(nèi)部創(chuàng)建新的數(shù)組,該數(shù)組的大小是原切片容量的 2 倍讽挟。最后 append 返回這個(gè)數(shù)組的全切片懒叛,即從 0 到 length - 1 的切片)。下面的程序使事情變得明朗:

func main() {  
    cars := []string{"Ferrari", "Honda", "Ford"}
    fmt.Println("cars:", cars, "has old length", len(cars), "and capacity", cap(cars)) //capacity of cars is 3
    cars = append(cars, "Toyota")
    fmt.Println("cars:", cars, "has new length", len(cars), "and capacity", cap(cars)) //capacity of cars is doubled to 6
}

在上面的程序中耽梅,cars 的容量開始時(shí)為 3薛窥。在第 10 行我們追加了一個(gè)新的元素給 cars,并將 append(cars, "Toyota")的返回值重新復(fù)制給 cars⊙劢悖現(xiàn)在 cars 的容量翻倍诅迷,變?yōu)?6。上面的程序輸出為:

cars: [Ferrari Honda Ford] has old length 3 and capacity 3  
cars: [Ferrari Honda Ford Toyota] has new length 4 and capacity 6  

切片的 0 值為 nil众旗。一個(gè) nil 切片的長(zhǎng)度和容量都為 0罢杉。可以利用 append 函數(shù)給一個(gè) nil 切片追加值逝钥。

func main() {  
    var names []string //zero value of a slice is nil
    if names == nil {
        fmt.Println("slice is nil going to append")
        names = append(names, "John", "Sebastian", "Vinay")
        fmt.Println("names contents:",names)
    }
}

在上面的程序中 namesnil屑那,并且我們把 3 個(gè)字符串追加給 names程序的輸出為:

slice is nil going to append  
names contents: [John Sebastian Vinay]

可以使用 ... 操作符將一個(gè)切片追加到另一個(gè)切片末尾:

func main() {  
    veggies := []string{"potatoes","tomatoes","brinjal"}
    fruits := []string{"oranges","apples"}
    food := append(veggies, fruits...)
    fmt.Println("food:",food)
}

上面的程序中艘款,在第10行將 fruits 追加到 veggies 并賦值給 food持际。...操作符用來(lái)展開切片。程序的輸出為:food: [potatoes tomatoes brinjal oranges apples]哗咆。

切片作為函數(shù)參數(shù)

可以認(rèn)為切片在內(nèi)部表示為如下的結(jié)構(gòu)體:

type slice struct {  
    Length        int
    Capacity      int
    ZerothElement *byte
}

可以看到切片包含長(zhǎng)度蜘欲、容量、以及一個(gè)指向首元素的指針晌柬。當(dāng)將一個(gè)切片作為參數(shù)傳遞給一個(gè)函數(shù)時(shí)姥份,雖然是值傳遞,但是指針始終指向同一個(gè)數(shù)組年碘。因此將切片作為參數(shù)傳給函數(shù)時(shí)澈歉,函數(shù)對(duì)該切片的修改在函數(shù)外部也可以看到。讓我們寫一個(gè)程序來(lái)驗(yàn)證這一點(diǎn)屿衅。

func subtactOne(numbers []int) {  
    for i := range numbers {
        numbers[i] -= 2
    }

}
func main() {

    nos := []int{8, 7, 6}
    fmt.Println("slice before function call", nos)
    subtactOne(nos)                               //function modifies the slice
    fmt.Println("slice after function call", nos) //modifications are visible outside

}

在上面的程序中埃难,第 17 行將切片中的每個(gè)元素的值減2。在函數(shù)調(diào)用之后打印切片的的內(nèi)容,發(fā)現(xiàn)切片內(nèi)容發(fā)生了改變涡尘。你可以回想一下忍弛,這不同于一個(gè)數(shù)組,對(duì)函數(shù)內(nèi)部的數(shù)組所做的更改在函數(shù)外不可見考抄。上面的程序輸出如下:

array before function call [8 7 6]  
array after function call [6 5 4] 

多維切片

同數(shù)組一樣细疚,切片也可以有多個(gè)維度。

func main() {  
     pls := [][]string {
            {"C", "C++"},
            {"JavaScript"},
            {"Go", "Rust"},
            }
    for _, v1 := range pls {
        for _, v2 := range v1 {
            fmt.Printf("%s ", v2)
        }
        fmt.Printf("\n")
    }
}

上面程序的輸出如下:

C C++  
JavaScript  
Go Rust

內(nèi)存優(yōu)化

切片保留對(duì)底層數(shù)組的引用川梅。只要切片存在于內(nèi)存中疯兼,數(shù)組就不能被垃圾回收。這在內(nèi)存管理方便可能是值得關(guān)注的贫途。假設(shè)我們有一個(gè)非常大的數(shù)組镇防,而我們只需要處理它的一小部分,為此我們創(chuàng)建這個(gè)數(shù)組的一個(gè)切片潮饱,并處理這個(gè)切片来氧。這里要注意的事情是,數(shù)組仍然存在于內(nèi)存中香拉,因?yàn)榍衅谝盟?/p>

解決該問(wèn)題的一個(gè)方法是使用 copy 函數(shù) func copy(dst, src []T) int 來(lái)創(chuàng)建該切片的一個(gè)拷貝啦扬。這樣我們就可以使用這個(gè)新的切片,原來(lái)的數(shù)組可以被垃圾回收凫碌。

func countries() []string {  
    countries := []string{"USA", "Singapore", "Germany", "India", "Australia"}
    neededCountries := countries[:len(countries)-2]
    countriesCpy := make([]string, len(neededCountries))
    copy(countriesCpy, neededCountries) //copies neededCountries to countriesCpy
    return countriesCpy
}
func main() {  
    countriesNeeded := countries()
    fmt.Println(countriesNeeded)
}

在上面程序中扑毡,第 9 行 neededCountries := countries[:len(countries)-2] 創(chuàng)建一個(gè)底層數(shù)組為 countries 并排除最后兩個(gè)元素的切片。第 11 行將 neededCountries 拷貝到 countriesCpy 并在下一行返回 countriesCpy∈⑾眨現(xiàn)在數(shù)組countries 可以被垃圾回收瞄摊,因?yàn)?neededCountries 不再被引用。

系列文章來(lái)源于網(wǎng)絡(luò)和本人總結(jié)苦掘,只作學(xué)習(xí)備忘使用换帜。
本文參考:https://blog.csdn.net/u011304970/article/details/74938457

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鹤啡,隨后出現(xiàn)的幾起案子惯驼,更是在濱河造成了極大的恐慌,老刑警劉巖递瑰,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祟牲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抖部,警方通過(guò)查閱死者的電腦和手機(jī)说贝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)慎颗,“玉大人乡恕,你說(shuō)我怎么就攤上這事换淆。” “怎么了几颜?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)讯屈。 經(jīng)常有香客問(wèn)我蛋哭,道長(zhǎng),這世上最難降的妖魔是什么涮母? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任谆趾,我火速辦了婚禮,結(jié)果婚禮上叛本,老公的妹妹穿的比我還像新娘沪蓬。我一直安慰自己,他們只是感情好来候,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布跷叉。 她就那樣靜靜地躺著,像睡著了一般营搅。 火紅的嫁衣襯著肌膚如雪云挟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天转质,我揣著相機(jī)與錄音园欣,去河邊找鬼。 笑死休蟹,一個(gè)胖子當(dāng)著我的面吹牛沸枯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赂弓,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼绑榴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了盈魁?” 一聲冷哼從身側(cè)響起彭沼,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎备埃,沒(méi)想到半個(gè)月后姓惑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡按脚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年于毙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辅搬。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唯沮,死狀恐怖脖旱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情介蛉,我是刑警寧澤萌庆,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站币旧,受9級(jí)特大地震影響践险,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吹菱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一巍虫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳍刷,春花似錦占遥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尤揣,卻和暖如春凛捏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芹缔。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工坯癣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人最欠。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓示罗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親芝硬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚜点,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • 切片(slice)是 Golang 中一種比較特殊的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)更便于使用和管理數(shù)據(jù)集合拌阴。切片是圍繞動(dòng)態(tài)...
    小孩真笨閱讀 1,079評(píng)論 0 1
  • 切片(slice)是 Golang 中一種比較特殊的數(shù)據(jù)結(jié)構(gòu)绍绘,這種數(shù)據(jù)結(jié)構(gòu)更便于使用和管理數(shù)據(jù)集合。切片是圍繞動(dòng)態(tài)...
    51reboot閱讀 28,656評(píng)論 2 10
  • 數(shù)組Go語(yǔ)言中的數(shù)組是定長(zhǎng)的同一類型數(shù)據(jù)的集合迟赃,數(shù)組索引是從0開始的陪拘。數(shù)組有以下幾種創(chuàng)建方式 以下是一些特殊數(shù)組 ...
    小杰的快樂(lè)時(shí)光閱讀 1,691評(píng)論 0 0
  • 線性結(jié)構(gòu)是計(jì)算機(jī)最常用的數(shù)據(jù)結(jié)構(gòu)之一。無(wú)論是數(shù)組(arrary)還是鏈表(list)纤壁,在編程中不可或缺左刽。golan...
    _二少爺閱讀 6,621評(píng)論 5 13
  • 11. 數(shù)組和切片 數(shù)組 數(shù)組是同一類型元素的集合。例如酌媒,整數(shù)集合 5,8,9,79,76 形成一個(gè)數(shù)組欠痴。Go 語(yǔ)...
    瀧汰泱閱讀 318評(píng)論 0 0