我在测试包中发现了这两条语句
var _ TB = (*T)(nil)
var _ TB = (*B)(nil)
以下是一个简单的程序,用于尝试和调查的评估结果
package main
import "fmt"
type TB interface{}
type T struct{}
var x TB = (*T)(nil)
func main() {
fmt.Printf("%T, %v", x, x)
}
输出
*main.T, <nil>
问题是,这个语法是什么意思,它的用途是什么,特别是在我们分配给空白标识符的情况下?TIA-
这是一个编译时检查,用于确保类型*T
和*B
满足接口TB
。因此,如果修改不再满足TB
的*T
或*B
,则会出现编译错误。
它根本不会影响运行时。标识的空白告诉编译器它可以将其抛出。