package main
//這裡只說些自己理解的,當然切片的操作遠遠不止這些。
import (
"fmt"
"reflect"
)/**
* * 學習切片首先要明白len和cap的區別。len()是儲存資料多少,cap()是容量大小。舉個例子乙個大會堂可以容納1000人這是cap,但是實際裡面隻座了100人這是len
*/func main() 這裡的cap和len各是多少
//**可以看到都是8, 那麼為什麼呢?實際我們istrings 中指存了6個值
var istrings [8]string = [8]string
fmt.printf("istrings len() = %d, cap() = %d\n", len(istrings), cap(istrings))
var vstrings = [8]string
fmt.printf("istrings len() = %d, cap() = %d\n", len(vstrings), cap(vstrings))
//通過上面我們可以看出,len()實際計算的是陣列中最後乙個元素所在,不管之前的元素是不是為0,都是len()計算的長度
array1 := string
array1[2] = "clojure"
//切片 遵從左閉右開規則[:3] (0, 1, 2)
slice := array1[:3]
fmt.println(slice, array1)
//這裡可以看到生成切片的型別
fmt.println("type:", reflect.typeof(slice))
slice[2] = "hello"
fmt.println(slice, array1)
//不需要擴容
//需要擴容, 這是切片就是乙個新的陣列
fmt.println(slice, array1)
//對切片進行擴容並不會對原陣列進行擴容
fmt.printf("len %d\n", len(array1))
//這時可以看到擴容之後的切片就是乙個新的陣列不在和原陣列有關係
slice[2] = "welcome"
fmt.println(slice, array1)
var array2 [10]int = [10]int //[2:6) 左閉右開
slice1 := array2[2:6]
fmt.println(slice1)
}
Golang切片學習筆記
在 golang 中可以通過多種方式建立和初始化切片。是否提前知道切片所需的容量通常會決定如何建立切片。1.1 通過 make 函式建立切片 使用 golang 內建的 make 函式建立切片,此時需要傳入乙個引數來指定切片的長度 建立乙個整型切片 其長度和容量都是 5 個元素 slice make...
golang學習(九) 切片(slice)
在go 語言中,陣列是值型別,長度是固定的 而切片是引用型別,長度可動態增長。切片的內部結構包括位址 大小和容量。特性 1.當省略開始位置時,表示從連續區域開頭到結束位置。2.當省略結束位置時,表示從開始位置到整個連續區域結束位置。3.兩者都省略時,與切片本身等效。基本格式如下 slice 開始位置...
三 Golang學習筆記 切片
陣列存在的問題 定義完,長度固定,不易擴充套件 切片 長度不固定,可以追加元素,可以理解成 動態陣列 但不是陣列 func main 3.使用make函式建立 make 型別,長度 初始化空間 容量 初始化和空閒 長度不能大於容量,第三個引數可以省略 s make int,3 5 fmt.print...