问题描述
我了解到,正在使用类型断言在 go 中实现强制转换。 我正在尝试将一个对象作为一个实现接口的结构的实例。 我的代码:
package main
import "fmt"
type Base interface {
Merge(o Base)
}
type Impl struct {
Names []string
}
func (i Impl) Merge (o Base) {
other,_ := o.(Impl)
i.Names = append(i.Names,other.Names...)
}
func main() {
impl1 := &Impl{
Names: []string{"name1"},}
impl2 := &Impl{
Names: []string{"name2"},}
impl1.Merge(impl2)
fmt.Println(impl1.Names)
}
输出:
[name1]
我希望输出是:
[name1,name2]
为什么这个演员表不起作用?调试之后,似乎 other
变量为空。