1. 程式人生 > >go語言學習-陣列切片(slice)通過陣列賦值或建立詳解

go語言學習-陣列切片(slice)通過陣列賦值或建立詳解

go語言中陣列切片(slice)建立一般有兩種種方式:

陣列切片的建立

  • 直接建立:
    arr := make([]int,10)
  • 基於資料建立
    arr := arr2[frist:last]
    該切片的元素為從下標為frist的元素開始,到小標位last-1元素,左閉右開
    arr := arr2[:]
    arr := arr2[0:]
    arr := arr2[0:len(arr2)]
    上面三種寫法的表示arr2中的所有元素都被arr包含

陣列切片的結構

陣列切片的結構可以抽象為3個變數:
- 一個指向原生陣列的指標 ptr
- 陣列切片的元素個數 num
- 陣列切片已分配的記憶體 mem

當我們通過一個數組給一個數組切片賦值的時,ptr指標會指向原陣列frist元素所在的位置,num= last-frist,mem這塊還沒找到相關資料後續補充

程式碼如下:

package main

import "fmt"


func main(){

    arr := []int{1,2,3,4,5,6}


    for i,n := range arr{
        fmt.Println(i ," = ",n)
    }

    fmt.Println("\n")

    arr2 := arr[0:3]

    for i,n := range arr2{
        fmt.Println(i ," = "
,n) } }
0  =  1
1  =  2
2  =  3
3  =  4
4  =  5
5  =  6


0  =  1
1  =  2
2  =  3

Process finished with exit code 0
package main

import "fmt"


func main(){

    arr := []int{1,2,3,4,5,6}


    for i,n := range arr{
        fmt.Println(i ," = ",n)
    }

    fmt.Println("\n")

    arr2 := arr[1
:3] for i,n := range arr2{ fmt.Println(i ," = ",n) } }

執行結果:

0  =  1
1  =  2
2  =  3
3  =  4
4  =  5
5  =  6


0  =  2
1  =  3

Process finished with exit code 0

相關推薦

go語言學習-陣列切片slice通過陣列建立

go語言中陣列切片(slice)建立一般有兩種種方式: 陣列切片的建立 直接建立: arr := make([]int,10) 基於資料建立 arr := arr2[frist:last] 該切片的元素為從下標為frist的元素開始,到小標

go語言學習-常用命令

go常用命令 go get:獲取遠端包(得裝git) go run:直接執行程式(寫程式碼時除錯用) go build:測試編譯,檢查是否有編譯錯誤 go fmt:格式化程式碼(一般不咋用,IDE都自帶了) go install:編譯包檔案並編譯整個程式 go test:執行測試檔

go語言學習之路——go語言進行微信公眾號開發

學習教程地址:http://www.imooc.com/topic/golang?mc_marking=ed9ea9bd605fe0066c71d80cc8603806&mc_channel=bdgoyyzt&audience=230227github地址:h

Go語言學習之signal

package main import ( "bytes" "errors" "fmt" "io" "os" "os/exec" "os/signal" "runtime/debug" "

go語言學習之路——go在win10下的安裝與配置

一 下載go包1.可以去go的官網上去下載(需要梯子),一般可以從國內的映象中下載,地址:https://www.golangtc.com/download二 go環境變數的配置1、將Go的壓縮包解壓到任意目錄,我的為D:\go 2、 配置GoRoot路徑開啟系統屬性:環境變

web前端學習JavaScript學習筆記部分7-- JavaScript DOM物件控制HTML元素

1、方法 getElementsByName() 獲取name 可以獲取一個數組型別資料(引數加引號) getElementsByTagName() 獲取元素   getAttribute()

Nginx學習之路Nginx中的事件驅動過程-----connection事件的註冊過程

在上一篇文章Nginx學習之路(八)Nginx中的事件驅動過程詳解-----以listenfd註冊過程為例中舉了listenfd的註冊過程來說明事件驅動中的事件註冊過程,這是一個簡單的過程,今天來說明下當瀏覽器發起一個http請求時,nginx是如何將這個事件註冊到epoll

Nginx學習之路Nginx中的事件驅動過程-----以listenfd註冊過程為例

Nginx的高效得益於它的事件驅動機制,整個事件驅動機制基本框架就是linux下的select,poll,epoll這幾個IO多路複用模式,但是nginx絕不單單只是使用它們這麼簡單,今天以epoll模式為例,從nginx最開始的listenfd的監聽的過程來說明nginx是

Go語言學習筆記十一: 切片slice

操作 容量 方括號 一個 組類型 學習 中學 slice 修改 Go語言學習筆記十一: 切片(slice) 切片這個概念我是從python語言中學到的,當時感覺這個東西真的比較好用。不像java語言寫起來就比較繁瑣。不過我覺得未來java語法也會支持的。 定義切片 切片可以

Go語言學習八:切片slice和範圍range

// Go 語言切片是對陣列的抽象。切片的單詞來源於可以對其他陣列和切片進行片段擷取 // Go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用, // Go中提供了一種靈活,功能強悍的內建型別切片("動態陣列"), // 與陣列相比切片的長度是不固定的,可以追加

Go語言基礎—— Go語言結構體、Go語言切片Slice、range遍歷、Go語言Map集合

Go語言結構體 Go 語言中陣列可以儲存同一型別的資料,但在結構體中我們可以為不同項定義不同的資料型別。 結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。  結構體表示一項記錄,比如儲存圖書館的書籍記錄,每本書有以下屬性: Title :標題&nbs

Go - 切片Slice

什麽 部分 pri 長度 code ron logs 內存 tro 定義 切片本身不是數組,它指向底層的數組或者數組的一部分。因此,可以使用Slice來處理變長數組的應用場景。 Silice 是一種引用類型。 1、定義一個空的Slice package main

GO語言學習切片陣列

1.陣列、切片   陣列的長度是固定的,切片的長度是可變長的     陣列的長度在宣告時就必須給定,並且之後不會再變化,陣列的長度是其型別的一部分,比如[1]string和[2]string 不是相同的陣列型別.     切片可以看作是對陣列的封裝,每一個切片的底層的資料結構一定

GO學習筆記——GO語言整合工具GoLand2

既然開始下定決心要學GO語言了,先從安裝做起吧。 安裝的過程很簡單,百度上一搜大把的教程,我這裡就不做搬運工了,可以自己去百度上搜怎麼安裝。 不過這裡我要說明一下,百度上的教程裡的那個環境變數的設定,有一個GOPATH環境變數,這個環境變數其實我們初學者在學基礎語法的時候

Go語言學習資料下載PDF檔案

Golang語言社群--專業分享技術go相關技術文章 我們一直在努力,再為廣大的gopher提供學習的平臺 下載連結: http://www.golang.ltd/forum.php?mod=viewthread&tid=6537

go遍歷結構體struct欄位對應的切片slice,字典map

一、遍歷結構體欄位: eg1: package main import ( "fmt" "reflect" ) type person struct { name string age int } func main()

go 語言 基礎 類型1

必須 const 表達式 基本 基本類 image 關鍵字 字符串 函數 變量 使用關鍵字 var定義變量,自動初始化為0值。如果提供初始化值,可省略變量類型,由編譯器自動推斷。 在函數內部可以使用 := 方式定義變量 func main() { x := 123

Go語言內存管理內存分配

特定 offset 閾值 簡化 思路 三種 私有ca 空間不足 ces Go語言內存管理(一)內存分配 golang作為一種“高級語言”,也提供了自己的內存管理機制。這樣一方面可以簡化編碼的流程,降低因內存使用導致出現問題的頻率(C語言使用者尤其是初學者應該深有體會),對程

Go語言字串高效拼接

在我們程式設計的時候,和字串打交道是必不可少的,我們對資料庫裡文字的處理,Web文字的顯示,文字資料的儲存等都需要和字串打交道,那麼對於字串來說,查詢、拼接這些都是常用的操作,尤其是以拼接使用的比較多,比如把一個人的姓名和年齡拼接在一起顯示。 在Go語言(golang)中,對於字串的拼接處理有很多種方法,那

Go語言字串高效拼接

在上一篇關於字串拼接的文章 Go語言字串高效拼接(一) 中,我們演示的多種字串拼接的方式,並且使用一個例子來測試了他們的效能,通過對比發現,我們覺得效能高的Builder並未發揮出其應該的效能,反而+號拼接,甚至strings.Join方法的效能更優越,那麼這到底是什麼原因呢?今天我們開始解開他們神祕的面紗,