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

2022-03-23 00:08:27 字數 1897 閱讀 4024

概念

切片(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(slice)) //

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++

}fmt.println(

"2d:

", twod)

}

//

結果emp: [ ]

set: [a b c]

get: c

len:

3apd: [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

34]]

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

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

Golang 變數申明的三種方式

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

三種簡單的博弈

博弈問題 1 對於必勝狀態,一定有乙個後繼是必敗的 2 對於必敗狀態,它的所有後繼是必勝的 巴什博奕 1 本遊戲是乙個二人遊戲 2 有一堆石子一共有n個 3 兩人輪流進行 4 每走一步可以取走1 m個石子 5 最先取光石子的一方為勝 如果遊戲的雙方使用的都是最優策略,請輸出哪個人能贏。巴什博奕可以用...