面试题答案
一键面试- 可能遇到的边界情况:
- 方法中访问结构体的指针类型字段时,零值的指针字段为
nil
,可能导致空指针引用错误。例如,如果User
结构体中有一个指针类型的字段*Address
,在方法中访问u.Address.City
时,如果u.Address
为nil
,就会引发运行时错误。
- 方法中访问结构体的指针类型字段时,零值的指针字段为
- 处理方式:
- 在方法中对可能为空的指针字段进行检查。例如:
package main
import "fmt"
type Address struct {
City string
}
type User struct {
Name string
Address *Address
}
func (u User) PrintCity() {
if u.Address!= nil {
fmt.Println(u.Address.City)
} else {
fmt.Println("No address set")
}
}
在上述代码中,User
结构体有一个 *Address
指针类型字段。PrintCity
方法在访问 Address.City
前先检查 u.Address
是否为 nil
,这样就避免了运行时错误。在使用零值调用 PrintCity
方法时,会输出 No address set
。
func main() {
var u User
u.PrintCity()
}