golang 空指针可以访问函数吗?
先给答案是可以访问的,
看下实例:
package main
import (
"fmt"
)
type person struct{}
func(p *person) sayHi(){
fmt.Println("hi")
p.sayHi2()
}
func(p *person) sayHi2(){
fmt.Println("hi2")
}
func main() {
var p *person
p.sayHi()
输出:
hi
hi2
虽然p是空指针,但是是可以访问sayHi()函数的
其实可以这么理解,类对象其实没用上:
package main
import (
"fmt"
)
type person struct{}
func sayHi(p *person) {
fmt.Println("hi")
sayHi2(p)
}
func sayHi2(p *person){
fmt.Println("hi2")
}
func main() {
var p *person
sayHi(p)
可以把结构函数看成普通带参函数,只是刚好参数p是空的。