代码如下
```
type A struct {
}
func (this *A) Test() string {
return "123"
}
type C struct {
client *A
}
func main() {
c := C{}
log.Println(c.client.Test())
var a *A
log.Println(a.Test())
}
```
期望如 1.16.x会抛出 panic 错误才对
不知道为何1.17.x 为何会处理为正常输出
这样不是会出现更多坑吗
![image.png](https://static.studygolang.com/211230/0e67a319d05c3b6e07ce90bf28b7a053.png)
不对 我使用1.16.5也不报错
朋友的go就报错
![image.png](https://static.studygolang.com/211230/37e9d1251c23e52ec474e770b487b4ad.png)
#1
更多评论
```
func (this *A) Test() string {
return "123"
}
```
不报错
报错 此报错我觉得是正常的毕竟没实例化
```
func (this A) Test() string {
return "123"
}
```
#2
看看下面这几种方式能否对你有启发
```go
type A struct {
}
func (a *A) Exec() string {
return "123"
}
func Exec(a *A) string {
return "123"
}
func TestNil(t *testing.T) {
r1 := (*A).Exec(nil)
t.Log(r1) // 输出 123
r2 := (*A)(nil).Exec()
t.Log(r2) // 输出 123
r3 := Exec(nil)
t.Log(r3) // 输出 123
}
```
#3