gpt4 book ai didi

types - 为什么 Go 输入 nil?

转载 作者:IT老高 更新时间:2023-10-28 13:01:38 26 4
gpt4 key购买 nike

为什么 Go 有 typed nil?为方便起见,它会引发显式接口(interface)构造检查。无类型 nil 有什么问题,设计者想用有类型 nil 解决什么问题?

最佳答案

听起来你在问这个错误信息:

http://play.golang.org/p/h80rmDYCTI

package main

import "fmt"

type A struct {}
type B struct {}

func (a *A) Foo() {
fmt.Println("A")
}

func (b *B) Foo() {
fmt.Println("B")
}

func main() {
n := nil
n.Foo()
}

打印出来:

prog.go:17: use of untyped nil
[process exited with non-zero status]

在那个例子中,程序应该打印“A”还是“B”?

您必须帮助编译器做出决定。这样做的方法是指定 n 的类型。

例如:

http://play.golang.org/p/zMxUFYgxpy

func main() {
var n *A
n.Foo()
}

打印“A”。

在其他语言中,如果 nnil 或其等效项,则 n.Foo() 可能会立即崩溃。 Go 的语言设计者决定让你决定应该发生什么。如果您在不检查 nil 的情况下访问指针,则会得到与其他语言相同的行为。

关于types - 为什么 Go 输入 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com