golang 切片的三種使用方式及區別的說明

2022-09-21 17:06:12 字數 1634 閱讀 8781

切片(slice)是建立在陣列之上的更方便,更靈活,更強大的資料結構。切片並不儲存任何元素而只是對現有陣列的引用。

①定義乙個切片,然後讓切片去引用乙個已經建立好的陣列

package main

import (

"fmt"

) func main()

var slice = arr[1:3]

fmt.println("arr=", arr)

fmt.println("slice=", slice)

fmt.println("slice len", len(slice))

fmt.println("slice cap", cap(slice))

}②通過make來建立切片

基本語法:var 切片名 type = make(, len, [cap]);引數說明:type是資料型別、len是大小、cap是切片容量(=長度)

通過make方式建立切片可以指定切片大小和容量

如果沒有給切片的各個元素賦值,那麼就會使用預設值(int、float=>0, strint=>"", bool=>false)

榮國make方式建立的切片對應的陣列是由make底層維護,對外不可見,也就是只能通過slice訪問各個元素

package main

import (

"fmt"

) func main()

③定義乙個切片,直接就指定具體陣列,使用原理類似於make的方式

package main

import (

"fmt"

) func main()

fmt.println("slice=", slice) //slice= [zhangsan lisi wangwu]

fmt.println("slice len", len(slice)) //slice len 3

fmt.println("slice cap", cap(s程式設計客棧lice)) //slice cap 3

}第一種方式是直接引用陣列,這個陣列是事先存在的,程式設計師可見

第二種方式是通過make來建立切片,make也會建立乙個陣列,是由切片在底層維護,程式設計師不可見

package main

import "fmt"

func main()

fmt.println("dcl:", t)

// 我們也可以建立多維切片,和陣列不同的是,切片元素的長度也是可變的。

twod := make(int, 3)

for i := 0; i < 3; i+sjvmqemped+

}fmt.println("2d: ", twod)}結果

emp: [  ]

set: [a b c]

get: c

len: 3

apd: [a b c d e f]

cpy: [a b c d e f]

sl1: [c d e]

sl2: [a b c d e]

sl3: [c d e f]

dcl: [g h i]

2d:  [[0] [1 2] [2 3 4]]

本文標題: golang 切片的三種使用方式及區別的說明

本文位址: /jiaoben/golang/387884.html

Golang切片的三種簡單使用方式及區別

概念 切片 slice 是建立在陣列之上的更方便,更靈活,更強大的資料結構。切片並不儲存任何元素而只是對現有陣列的引用。三種方式及細節案例 定義乙個切片,然後讓切片去引用乙個已經建立好的陣列 package main import fmt func main var slice arr 1 3 fm...

Golang 變數申明的三種方式

golang 申明變數主要有三種方式 一是使用 var 關鍵字,申明包級或函式級變數 二是使用短變數申明方式,只能申明函式級變數,且需指明變數值 三是使用 const 關鍵字,申明包級或函式級常量。1.var var 可以申明包級變數,短變程式設計客棧量申明方式不可以,這是二者最大的區別。var n...

Golang三種方式實現超時退出

前段時間發現線上有個服務介面,總是間歇性告警,有時候一天兩三次,有時候一天都沒有。告警的邏輯是在乙個介面中非同步呼叫了另乙個http介面,這個http介面呼叫出現超時。但是我去問了負責這個http介面的同學,人家說他們的介面相應都是毫秒級別,還截圖監控了,有圖有真相,我還能說啥。但是,超時是確實存在...