其他分享
首页 > 其他分享> > GO_数组

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