gpt4 book ai didi

go - Go中下划线(空白标识符)的含义

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

当我阅读 Go 文档时,我发现了这个:

You can ask the compiler to check that the type T implements the interface I by attempting an assignment:

type T struct{}
var _ I = T{} // Verify that T implements I.

我不明白 _ 的用途,我在其他作业中看到过它,但不明白它的含义。深入挖掘我发现它被称为“空白标识符”,但我不明白他们提出的用例:

_ = x // evaluate x but ignore it

围棋成语对我来说仍然有点陌生,所以我试图理解我为什么要做这样的事情。

最佳答案

_ 是一个特殊的标识符,你可以分配任何东西,但从不读取。在您给出的第一个示例中:

var _ I = T{}

无法访问此变量,因此将在生成的程序中对其进行优化。但是,如果类型 T 不能分配给接口(interface) I,则可能会导致编译错误。所以在这种情况下,它被用作关于类型的静态断言。

第二种情况更常见。虽然丢弃函数调用的结果可能看起来很奇怪,但在具有多个返回的函数中可能更有意义。考虑一个返回两个值但您只对第一个值感兴趣的函数 foo?您可以使用 _ 忽略第二个:

a, _ = foo()

您可以通过创建另一个变量来保存不需要的返回值来获得相同的效果,但此功能意味着您无需担心为其选择唯一名称。

关于go - Go中下划线(空白标识符)的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357028/

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