Go学习:数组

编程入门 行业动态 更新时间:2024-10-10 13:22:54

Go学习:<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组"/>

Go学习:数组

定义数组

数量写在类型前面

func main() {// 定义数组,只定义了数组元素的个数没有定义元素内容var arr1 [5]int// 初始化一个数组,元素个数写死arr2 := [3]int{1,3,5}// 元素个数用...表示,由编辑器确定数组元素个数arr3 := [...]int{2,4,6,8,0}fmt.Println(arr1,arr2,arr3)//[0 0 0 0 0] [1 3 5] [2 4 6 8 0]// 二维数组定义var grid [4][5]int	fmt.Println(grid)// [[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]}

数组遍历

使用数组下标进行遍历

func main() {arr3 := [...]int{2,4,6,8,0}for i:=0;i < len(arr3);i++{fmt.Print(arr3[i]," ") // 2 4 6 8 0 }
}

使用range关键字遍历

func main() {arr3 := [...]int{2,4,6,8,0}for i:= range arr3{fmt.Print(arr3[i]," ") // 2 4 6 8 0 }
}

同时获取元素和下标

func main() {arr3 := [...]int{2, 4, 6, 8, 0}// 如果不需要获取下标,i就用_表示for i, v := range arr3 {fmt.Println(i, v) }
}
// 0 2
// 1 4
// 2 6
// 3 8
// 4 0

为什么要使用range?

  • 意义明确,美观
  • c++没有类似的能力
  • Java/Python:只能for each value,不能同时获取i,v

数组是值类型

func main() {var arr1 [5]intarr2 := [3]int{1, 3, 5}arr3 := [...]int{2, 4, 6, 8, 0}printArray(arr3) // 100 4 6 8 0  fmt.Println()for _, v := range arr3 {fmt.Print(v," ") // 2 4 6 8 0 }
}func printArray(arr [5]int){arr[0] = 100for _,v:= range arr{fmt.Print(v," ")}
}
  • [5]int和[3]int不是同一个类型
  • 数组是值类型,调用printArray函数时会拷贝数组;再printArray对数组的修改,不会影响调用者
  • 再go语言中一般不直接使用数组

与指针搭配使用

func main() {var arr1 [5]intarr2 := [3]int{1, 3, 5}arr3 := [...]int{2, 4, 6, 8, 0}printArray1(&arr3)fmt.Println() // 100 4 6 8 0 for _, v := range arr3 {fmt.Print(v," ") // 100 4 6 8 0 }
}
func printArray1(arr *[5]int){arr[0] = 100for _,v:= range arr{fmt.Print(v," ")}
}

与指针搭配使用时,不会对数组进行拷贝,再函数内对数组的修改也会影响调用者

更多推荐

Go学习:数组

本文发布于:2023-07-28 19:27:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1287119.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!