Go 語言視訊學習----陣列
阿新 • • 發佈:2019-01-25
陣列的初始化
func main() { var arr [5]int arr1:=[3]int{1,2,3} arr2:=[...]int{2,3,4,5,6,7} var grid [4][5]int fmt.Println(arr,arr1,arr2,grid) } 陣列的遍歷 func main() { var arr [5]int arr1:=[3]int{1,2,3} arr2:=[...]int{2,3,4,5,6,7} var grid [4][5]int fmt.Println(arr,arr1,arr2,grid) for i:=0;i<len(arr1);i++ { fmt.Println(arr1[i]) } //range可以返回陣列的下標 for j:=range arr1{ fmt.Println(j) } //range可以返回陣列的下標及對應的值 for k,v:=range arr1{ fmt.Println(k,v) } //如果不想返回下標可以以_代替 for _,v:=range arr1{ fmt.Println(v) }
}
用range簡單實現一個方法
func sum(arr [3]int) int{ sum:=0 for _,v:=range arr{ sum+=v } return sum } func main() { arr1:=[3]int{1,2,3} fmt.Println(sum(arr1)) }
陣列是值型別
- [10]int 和[20]int是不同型別
- 呼叫func f(arr [10] int)會拷貝陣列(值傳遞)
- 在go語言中一般不直接使用陣列
package main import ( "fmt" ) //方法中改變陣列值 func printArray(arr [5]int){ arr[0]=100 for _,v:=range arr{ fmt.Println(v) } } //方法中傳入指標改變陣列的值 func printArray1(arr *[5]int){ arr[0]=100 for _,v:=range arr{ fmt.Println(v) } } func main() { var arr [5]int arr2:=[...]int{2,3,4,5,6} fmt.Println(sum(arr1)) fmt.Println("printArray(arr):") printArray(arr) fmt.Println("printArray(arr2):") printArray(arr2) //因為是值傳遞所以本身的值沒有改變 fmt.Println(arr,arr2) fmt.Println("printArray(arr):") printArray1(&arr) fmt.Println("printArray(arr2):") printArray1(&arr2) //指標可以實現引用傳遞,值被改變 fmt.Println(arr,arr2) }