当在结构中打印错误类型字段的 nil 值时,以下代码会出现 panic。为什么?
package main
import (
"fmt"
)
type ta struct {
int
}
type tb struct {
int
*ta
}
type tc struct {
int
error
}
type td struct {
int
error interface{}
}
func main() {
fmt.Println(fmt.Sprintf("%v", ta{1}))
fmt.Println(fmt.Sprintf("%v", tb{1, nil}))
fmt.Println(fmt.Sprintf("%v", tc{1, nil}))
fmt.Println(fmt.Sprintf("%v", td{1, nil}))
}
▸ go run main.go
{1}
{1 <nil>}
%!v(PANIC=runtime error: invalid memory address or nil pointer dereference)
{1 <nil>}
https://play.golang.org/p/SrzUsJ3pyRC
跟进问题:如果我有这样一个值tc{1, nil},如何在不引起恐慌的情况下打印它?
繁花不似锦
Smart猫小萌
相关分类