GO_数组
作者:互联网
package main
import (
"fmt"
"unsafe"
)
func get_arr() (ret [3]int) {
ret = [3]int{1, 2, 3}
fmt.Printf("get_arr, ret:%p\n", &ret)
return ret
}
func modify_arr(arr [3]int) {
fmt.Println("in modify_arr begin:", arr)
arr[0] = 100
fmt.Println("in modify_arr end:", arr)
/*
in modify_arr begin: [1 2 3]
in modify_arr end: [100 2 3]
*/
}
func modify_arr2(arr *[3]int) {
fmt.Println("in modify_ar2r begin:", arr)
(*arr)[0] = 100
fmt.Println("in modify_arr2 end:", arr)
/*
in modify_arr begin: [1 2 3]
in modify_arr end: [100 2 3]
*/
}
func main() {
fmt.Println("--------------------hello world ,hello array")
var arr1 [3]int
var arr2 [5]int
// 数组的定义,长度是数组的一部分
// 数组一经定义,数组的长度已经固定,不能修改。
fmt.Println("arr1:", arr1)
fmt.Printf("%T %T\n", arr1, arr2)
fmt.Println("sizeof(arr1):", unsafe.Sizeof(arr1))
// 数组的初始化
// 1.
var a1 [3]int = [3]int{1, 2, 3}
fmt.Println("a1:",a1)
// 2.
var a2 = [3]int{1, 2, 3}
fmt.Println("a2:",a2)
// 3. 省略长度的初始化
var a3 = []int{1, 2, 3}
fmt.Println("a3:",a3)
// 4. 按索引的初始化
var a4 = []int{0:1, 2:2}
fmt.Println("a4:",a4)
// 数组赋值, 数组是值类型
a_tmp := a1
fmt.Println("a_tmp:", a_tmp)
a_tmp[0] = 100
fmt.Println("a_tmp:", a_tmp, " a1:", a1)
ret := get_arr()
fmt.Println("ret:", ret)
fmt.Printf("main, ret:%p\n", &ret)
// 函数返回值居然也可以是数组
modify_arr(a1)
fmt.Println("main, modify over1:", a1) // a1 没有变
modify_arr2(&a1) // 传地址
fmt.Println("main, modify over2:", a1) // a1 没有变
// main, modify over2: [100 2 3
}
标签:arr,int,fmt,modify,a1,Println,数组,GO 来源: https://blog.csdn.net/shen_chengfeng/article/details/122791731