Open
Description
- 一个指针可以指向一个接口类型吗
函数参数为interface{}
时候可以接收任何类型的值。
永远不要使用一个指针指向一个接口类型,因为它已经是一个指针。
- 正确的接口赋值示范
type Fragment interface {
Exec(transInfo *TransInfo) error
}
type GetPodAction struct {
}
func (g GetPodAction) Exec(transInfo *TransInfo) error {
...
return nil
}
正确的赋值方式有:
var fragment Fragment = new(GetPodAction)
var fragment Fragment = &GetPodAction{}
var fragment Fragment = GetPodAction{}
- 下面哪一行代码会
panic
package main
func main() {
var x interface{}
var y interface{} = []int{3, 5}
_ = x == x
_ = x == y
_ = y == y
}
解析:_ = y == y
行。因为两个比较值的动态类型为同一个不可比较类型。