03 陣列、切片的概念
定義陣列
var arr1 [5]int
arr2 := [3]int
arr3 :=[...]int
var grid [3][4]int
fmt.println(arr1,arr2,arr3)
fmt.println(grid)
陣列的遍歷
//下表和數值
for _,v := range arr3
maxindex :=-1
maxvalue :=-1
for i,v := range arr3
}
為什麼要用range
陣列是值型別
切片(slice)的概念
注意的是切片是半開半閉區間的
reslice
s := arr[2:6]
s = arr[:3]
s = arr[1:]
s = arr[:]
arr := [...]int
fmt.println("reslice operation====")
fmt.println("arr[:] : ",arr)
s1 := arr[2:6]
fmt.println("arr[2:6] : ",s1)
s2 := s1[3:5]
fmt.println("s[3:5] : ",s2)
這裡s2的結果,明顯是陣列是對s1越界了,但是還是可以列印出來,列印的結果還是可以列印出來!
slice的實現
向slice新增元素
fmt.println("add element to array")
s3 := arr[4:7]
fmt.println(s3)
//no longer view arr , will new a space and copy s3
fmt.println(s4)
fmt.println(s5)
對slice切片進行操作fmt.println("deteling slice ")
delete := s2[3]
fmt.println("detele elment is " , delete)
printslices(s2)
fmt.println("poping elment form front")
front := s2[0]
fmt.println("pop element is ",front)
printslices(s2)
fmt.println("poping elment form back")
back := s2[len(s2)-1]
fmt.println("pop element is ",back)
printslices(s2)
mapm := map[string]string
map的遍歷fmt.println("getting value")
if coursename, ok := m["caourse"]; okelse
map的key
例子:尋找最長不含有重複字元的子串
對於每乙個字母x
筆記03 複習序列 索引 切片
序列,索引,列表,元祖,字典,集合 序列 序列是一塊用於存放多個值的連續記憶體空間,並且按一定的順序排列,每乙個值 稱為元素 都分配乙個數字,稱為索引或位置,通過該索引可以取出相應的值.例如,我們可以把一家酒店看做乙個序列,那麼酒店裡的每乙個房間都 可以看成是這個序列的元素。而房間號就相當於索引,可...
筆記 go語言 (Slice)切片的概念
切片是什麼,定義乙個arr,定義乙個s為arr中的2到6,這個s就是乙個切片 arr int s arr 2 6 半開半閉區間,值為 2 3 4 5 下面的都是slice fmt.println arr 2 6 arr 2 6 2 3 4 5 fmt.println arr 6 arr 6 0 1 ...
資料 使用切片
在不同語言裡,對分配記憶體不同做法,go語言分為兩種方式,一種是new,一種是make,這兩種方式有很大的差別,我們new乙個型別,比如new int 的時候怎麼分配記憶體呢,它計算出型別的長度,int是8bit,然後在堆上或者也可能在棧上分配空間然後返回這個指標,不管是什麼型別都是一樣的。new乙...