一、 定义数组
package main
import (
"fmt"
)
func main() {
//空数组
var arr1 [10]int
//:=定义Array,必须初始化
arr2 := [5]int{1, 2, 3, 4, 5}
//自由长度
arr3 := [...]int{1, 2, 3}
//二维数组
var arrInArr [3][4]int
fmt.Println(arr1, arr2, arr3, arrInArr)
}
二、 遍历数组
- 下标遍历
// 下标遍历
func main() {
//:=定义Array,必须初始化
arr2 := [5]int{1, 2, 3, 4, 5}
for i := 0; i < len(arr2); i++ {
fmt.Println(arr2[i])
}
}
- range遍历(index)
func main() {
// range遍历(index)
arr2 := [5]int{1, 2, 3, 4, 5}
for index:= range arr2{
fmt.Println(index)
}
}
- range遍历(index,value)
func main() {
// range遍历(index,value)
arr2 := [5]int{1, 2, 3, 4, 5}
for index, value := range arr2 {
fmt.Println(index, value)
}
}
- range遍历(value)
func main() {
// range遍历(value), Go不允许定义不使用的变量,所以用下划线代替
arr2 := [5]int{1, 2, 3, 4, 5}
for _, value := range arr2 {
fmt.Println( value)
}
}
三、Go语言中Array是值类型
这意味着,Array传递到其他函数时,在其他函数的操作不会影响传递前的值
举个例子
func main() {
arr3 := [3]int{1, 2, 3}
fmt.Println("测试前", arr3)
testValue(arr3)
fmt.Println("测试后", arr3)
}
func testValue(araya [3]int) {
//函数内部,修改第一个元素值
araya[0] = 100
fmt.Println("测试中", araya)
}
测试结果:
所以数据是copy到下一个函数的,想要引用传递,则需要指针
四、指针
Go 中的指针是不参与计算的,单纯的表示变量的位置
- 指针用于引用传递
首先,上面的代码做一个变化:
func main() {
arr3 := [3]int{1, 2, 3}
fmt.Println("测试前", arr3)
testValue(&arr3)
fmt.Println("测试后", arr3)
}
func testValue(araya *[3]int) {
//函数内部,修改第一个元素值
araya[0] = 100
fmt.Println("测试中", araya)
}
新结果:
- 指针的定义方式
由上面代码可以看出指针的定义方式就是在普通类型前面加一个*
赋值就是在对应类型的值前面加&
,取出地址。
arr3 := [3]int{1, 2, 3}
var araya *[3]in = &arr3
喜欢请点个赞,
转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3
如有错误,请务必指正!谢谢!
我的博客:https://xzing.github.io/
网友评论