1 package main 2 3 import "fmt" 4 5 func fun1() { 6 fmt.Println("fun1().....") 7 } 8 9 // 普通函数 10 func fun2() [4]int { 11 arr := [4]int{1, 2, 3, 4} 12 return arr 13 } 14 15 // 指针函数 16 func fun3() *[4]int { 17 arr := [4]int{5, 6, 7, 8} 18 fmt.Printf("函数中arr的地址:%p\n", &arr) // 函数中arr的地址:0xc000010260 19 return &arr 20 } 21 22 func main() { 23 /* 24 函数指针:一个指针,指向了一个函数的指针。 25 因为go语言中,function,默认看作一个指针,没有*。 26 27 28 slice,map,function 29 30 指针函数:一个函数,该函数的返回值是一个指针。 31 32 */ 33 var a func() 34 a = fun1 35 a() // fun1()..... 36 37 arr1 := fun2() 38 fmt.Printf("arr1的类型:%T,地址:%p,数值:%v\n", arr1, &arr1, arr1) 39 // arr1的类型:[4]int,地址:0xc0000101e0,数值:[1 2 3 4] 40 41 arr2 := fun3() // 函数中arr的地址:0xc000010260 42 fmt.Printf("arr2的类型:%T,地址:%p,数值:%v\n", arr2, &arr2, arr2) 43 // arr2的类型:*[4]int,地址:0xc000006030,数值:&[5 6 7 8] 44 fmt.Printf("arr2指针中存储的数组的地址:%p\n", arr2) 45 // arr2指针中存储的数组的地址:0xc000010260 46 }