68_Go基础_1_35 指针函数

 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 }