- 主题:这2个有什么区别?
type Addifier interface{ Add(a, b int32) int32 }
type Adder struct{ name string }
//go:noinline
func (adder Adder) Add(a, b int32) int32 { return a + b }
var _ Addifier = (*Adder)(nil)
var _ Addifier = (Adder)(nil)
这两行代码有什么区别?
var _ Addifier = (*Adder)(nil)
var _ Addifier = (Adder)(nil)
--
FROM 222.128.87.*
Addifier 是一个类型, *Addifier才是指针。
我的理解是
var _ *Addifier = (*Adder)(nil)
var _ Addifier = (Adder)(nil)
这样才是对的。但是编译器说2种方式都是错的。
原因在哪里?
【 在 hothail (沸冰!无尽的华尔兹) 的大作中提到: 】
: 标 题: Re: 这2个有什么区别?
: 发信站: 水木社区 (Wed Jun 16 18:28:04 2021), 站内
:
: var _ Addifier = (*Adder)(nil)
: 这就是正常代码
:
: var _ Addifier = (Adder)(nil)
: 这行不能过吧?GoLand 提示 can not convert nil to the type 'Adder'
:
:
: 【 在 sumanwang (sumanwang) 的大作中提到: 】
: : type Addifier interface{ Add(a, b int32) int32 }
: : type Adder struct{ name string }
: : //go:noinline
: : ...................
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 111.206.87.*]
--
FROM 222.128.87.*
这个有出处吗?
【 在 hothail (沸冰!无尽的华尔兹) 的大作中提到: 】
: golang中,interface天然是指针
: - 来自 水木社区APP v3.4.2
--
FROM 222.128.87.*