ThatManK Mobile Article
Go基础_1_35 指针函数
package main
import "fmt"
func fun1() {
fmt.Println("fun1().....")
}
// 普通函数
func fun2() [4]int {
arr := [4]int{1, 2, 3, 4}
return arr
}
// 指针函数
func fun3() *[4]int {
arr := [4]int{5, 6, 7, 8}
fmt.Printf("函数中arr的地址:%p\n", &arr) // 函数中arr的地址:0xc000010260
return &arr
}
func main() {
/*
函数指针:一个指针,指向了一个函数的指针。
因为go语言中,function,默认看作一个指针,没有*。
slice,map,function
指针函数:一个函数,该函数的返回值是一个指针。
*/
var a func()
a = fun1
a() // fun1().....
arr1 := fun2()
fmt.Printf("arr1的类型:%T,地址:%p,数值:%v\n", arr1, &arr1, arr1)
// arr1的类型:[4]int,地址:0xc0000101e0,数值:[1 2 3 4]
arr2 := fun3() // 函数中arr的地址:0xc000010260
fmt.Printf("arr2的类型:%T,地址:%p,数值:%v\n", arr2, &arr2, arr2)
// arr2的类型:*[4]int,地址:0xc000006030,数值:&[5 6 7 8]
fmt.Printf("arr2指针中存储的数组的地址:%p\n", arr2)
// arr2指针中存储的数组的地址:0xc000010260
}