99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

go語言08切片怎么使用 go切片操作

Golang 中數組(Array)和切片(Slice)的區(qū)別

Go 中數組的長度是不可改變的,而 Slice 解決的就是對不定長數組的需求。他們的區(qū)別主要有兩點。

成都創(chuàng)新互聯專業(yè)為企業(yè)提供雞澤網站建設、雞澤做網站、雞澤網站設計、雞澤網站制作等企業(yè)網站建設、網頁設計與制作、雞澤企業(yè)網站模板建站服務,10余年雞澤做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

數組:

切片:

注意 1

雖然數組在初始化時也可以不指定長度,但 Go 語言會根據數組中元素個數自動設置數組長度,并且不可改變。切片通過 append 方法增加元素:

如果將 append 用在數組上,你將會收到報錯:first argument to append must be slice。

注意 2

切片不只有長度(len)的概念,同時還有容量(cap)的概念。因此切片其實還有一個指定長度和容量的初始化方式:

這就初始化了一個長度為3,容量為5的切片。

此外,切片還可以從一個數組中初始化(可應用于如何將數組轉換成切片):

上述例子通過數組 a 初始化了一個切片 s。

當切片和數組作為參數在函數(func)中傳遞時,數組傳遞的是值,而切片傳遞的是指針。因此當傳入的切片在函數中被改變時,函數外的切片也會同時改變。相同的情況,函數外的數組則不會發(fā)生任何變化。

go語言中實現切片(slice)的三種方式

定義一個切片,然后讓切片去引用一個已經創(chuàng)建好的數組。基本語法如下:

索引1:切片引用的起始元素位

索引2:切片只引用該元素位之前的元素

例程如下:

在該方法中,我們未指定容量cap,這里的值為5是系統(tǒng)定義的。

在方法一中,可以用arr數組名來操控數組中的元素,也可以通過slice切片來操控數組中的元素。切片是直接引用數組,數組是事先存在的,程序員是可見的。

通過 make 來創(chuàng)建切片,基本語法如下:

make函數第三個參數cap即容量是可選的,如果一定要自己注明的話,要注意保證cap≥len。

用該方法可以 指定切片的大小(len)和容量(cap)

例程如下:

由于未賦值系統(tǒng)默認將元素值置為0,即:

數值類型數組:????默認值為 0

字符串數組:? ? ? ?默認值為 ""

bool數組:? ? ? ? ? ?默認值為 false

在方法二中,通過make方式創(chuàng)建的切片對應的數組是由make底層維護,對外不可見,即只能通過slice去訪問各個元素。

定義一個切片,直接就指定具體數組,使用原理類似于make的方式。

例程如下:

Go 切片內存分配

切片是數組的抽象。 切片使用數組作為底層結構。 切片包含三個組件:容量,長度和指向底層數組的指針。

通過使用 append 或 copy 函數可以增加切片的容量。 append 函數可以為數組的末尾增加值,并在需要時增加容量。

當前儲存空間存不下數據時,空間會以之前的空間數*2

比如:

定義 numbers 的數組長度為5 ,空間給他10,并追加數據到切片。

空間為10, 當我們再添加一個數據到切片時候,空間是多少了呢?

得到數據為20,和我們設想的一樣。

切片中的數據是共用內存,也就是我們選區(qū)切片區(qū)間的某一個值,并且在這個小對象中進行數據的修改,會影響整個切片的值,在開發(fā)當中非常要注意這種。

舉個例子:

取了一個first 和second 這兩個數據重合的數據是2.

打印一下:

雖然在second 中修改了數據,但是影響到了大對象numbers 的數據,還有一個要注意的是,first 小對象,他的內存分配是5,second 的空間是4,這是為啥呢?原來,這樣取的小對象切片,的空間是這個切片加上大對象末尾的值

開發(fā)中如果修改了其中的一個變量,但是又不想影響大對象,這個時候會傻掉。

那如何去獲取一個和numbers 一樣的數據,但是又不會影響numbers呢?

我們copy一份numbers

輸出一下結果:

好,不懂在座的各位看懂了沒有。沒有影響的,通過copy 切片再去修改切片的值,是不會印象原切片的。

當前文章:go語言08切片怎么使用 go切片操作
本文地址:http://www.yijiale78.com/article34/ddocose.html

成都網站建設公司_創(chuàng)新互聯,為您提供用戶體驗網站制作營銷型網站建設企業(yè)建站搜索引擎優(yōu)化App開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都網站建設