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是空的。

posted @ 2023-03-17 10:24  若-飞  阅读(22)  评论(0编辑  收藏  举报