1 go語言在參數(shù)傳遞中只有值傳遞一種方式
package main
import "fmt"
func swap(a, b int) (int, int) {
? ? ? ? ? ? ?return b, a
}
func main() {
? ? ? ? ? ? ? ? ?a, b := 3, 4? ? ? //賦值
? ? ? ? ? ? ? ? a, b = swap(a, b) //接住返回的值
? ? ? ? ? ? ? ? fmt.Println(a, b)
}
輸出結(jié)果為: 4 3?
上面的函數(shù) swap也可以寫成以下形式:
func sawp(a,b *int) {
? ? ? ? *a,*b = *b,*a
}
調(diào)用形式為:
a,b := 3,4
swap(&a,&b)
fmt.Println(a,b)
2 go語言與數(shù)組表示:
package main
import "fmt"
func main() {
? ? ? ? ? ? var arr1 [5]int? ?// 定義數(shù)組時(shí)需要做到名字和聲明長(zhǎng)度在前,類型在后
? ? ? ? ? ? ? ? ?arr2 := [3]int{1, 2, 3}
? ? ? ? ? ? ? ? ?arr3 := [5]int{2, 4, 6, 8, 10}
? ? ? ? ? ? var grid [4][5]int? ? ? ? ? ? /*這里是二維數(shù)組,需要注意的是表達(dá)式不能寫作: grid:= [4][5] int .程序會(huì)報(bào)錯(cuò)*/
? ? ? ? ? ? fmt.Println(arr1, arr2, arr3, grid)
? ? ? ? ? ?for _, v := range arr3 {
? ? ? ? ? ? ? ? ? ? ? ? ? ?fmt.Println(v)
/*注意range的用法,range 是一個(gè)關(guān)鍵字,可以用來遍歷數(shù)組,這里的下劃線表示省略一個(gè)變量比如本來是寫做 for i,v := range arr3{? ?fmt.Println(i,v)}的,現(xiàn)在我不想用i了,便可以用_來代替。就如同該式*/
? ? ? ? ? ? ? }
}
輸出結(jié)果見 jc22.go
3?.slice
package main
import "fmt"
func main() {
? ? ? ? ? ? ? ? ? ? ? arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
? ? ? ? ? ? ? ? ? ? ? s := arr[2:6]
/*在這里[2:6]的形式表示slice(切片),其中計(jì)算機(jī)語言里的[。。。]一般表示左閉右開*/
? ? ? ? ? ? ? ? ?fmt.Println("arr[2:6]=", s)
}
故該程序輸出結(jié)果為:arr[2,6]=2,3,4,5
基本概念:slice可以理解為是一個(gè)數(shù)據(jù)結(jié)構(gòu),它可以理解為是對(duì)下層數(shù)組的一個(gè)view,舉一個(gè)程序例子如下:

其輸出結(jié)果如下:?

我們作出以下解釋:現(xiàn)在的s1=[2,3,4,5,6,7],我們?cè)趕1的基礎(chǔ)上進(jìn)行updateSlice函數(shù)后,里面的s[0]變?yōu)?00,注意這時(shí)原來的2的位置也變?yōu)?00了,故s1=[100,3,4,5,6,7],再對(duì)s2進(jìn)行同樣的操作,這時(shí)s2=[100,1, 100,3,4,5,6,7].而原數(shù)組也變?yōu)閇100,1,100,3,4,5,6,7]? ? ??
我們?cè)賮砜磖eslice操作,經(jīng)過再一次reslice,s2=[100,1,100,3,4],在經(jīng)過一次reclice,變?yōu)閇100,3,4].
現(xiàn)在我們?cè)偌由钜幌聦?duì)slice的理解

從圖中我們可以看到陰影部分為slice隱藏的數(shù)據(jù),再一次slice時(shí)如果沒有超出陰影的長(zhǎng)度(你切多了)我們就可以取到那里的值。
例子:

輸出結(jié)果為:

我們?cè)谶@里加入了Extending slice,并把值變回最初的樣子,以便我們觀察:
s1=[2,3,4,5],再s1基礎(chǔ)上進(jìn)行切片得到s2=[5,6].。但是這里s1只顯示了[2,3,4,5],沒有顯示的部分是s[4]=6,s[5]=7,在S2切片時(shí),可以切到后面(也就是圖中陰影部分)的值。