1. 程式人生 > >Go 語言視訊學習----陣列

Go 語言視訊學習----陣列

陣列的初始化

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)
}