概念
切片(slice)是建立在陣列之上的更方便,更靈活,更強大的資料結構。切片並不儲存任何元素而只是對現有陣列的引用。
三種方式及細節案例
①定義乙個切片,然後讓切片去引用乙個已經建立好的陣列
package mainimport (
"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 mainimport (
"fmt")
func main()
③定義乙個切片,直接就指定具體陣列,使用原理類似於make的方式
package mainimport (
"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 mainimport
"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 最先取光石子的一方為勝 如果遊戲的雙方使用的都是最優策略,請輸出哪個人能贏。巴什博奕可以用...