var _ I = (*T)(nil)

学习的时候看到这样一行代码

var _ Codec = (*GobCodec)(nil)

查了一下后,得到该语句的作用为:检查GobCodec这个结构体是否实现了Codec这个接口

空白标识符_代表变量名,这里不需要它,通过转换为(*T)(nil)来创建一个指向类型值的未初始​​化指针

package main

import "fmt"

type I interface {
	ITest()
}
type I2 interface {
	I2Test()
}

type IStruct struct{}

func (i *IStruct) I2Test() {

}

func main() {
	/*
		报错
		var _ I = (*IStruct)(nil)
	*/

	var _ I2 = (*IStruct)(nil)

	//等价于

	var istruct *IStruct = nil
	var i I2
	i = istruct
	fmt.Println(i)
}
posted @ 2022-11-28 16:58  科目三什么时候过  阅读(66)  评论(0编辑  收藏  举报