我目前正在尝试将结构复制到另一个实现接口的结构中。我的代码如下:
package main
import (
"fmt"
)
type intf interface {
SaySomething(string)
LaunchTheDevice(origin)
}
type destination struct{
origin
}
func (dest *destination) SaySomething(s string) {
fmt.Println("I'm saying --> ",s)
}
func (dest *destination) LaunchTheDevice(theOrigin origin) {
*dest = theOrigin
}
type origin struct{
name string
value string
infos string
}
func main() {
firstValue:= new(origin)
firstValue.name = "Nyan"
firstValue.value = "I'm the only one"
firstValue.infos = "I'm a cat"
secondValue := new(destination)
secondValue.LaunchTheDevice(*firstValue)
}
我希望函数LaunchTheDevice()
设置destination
的值。但是当我运行我的代码时,我收到了这个错误:
cannot use theOrigin (type origin) as type destination in assignment
那我该怎么做呢?为什么我不能运行我的代码?我不明白,因为我可以输入
dest.name = "a value"
dest.value = "another value"
dest.infos = "another value"
但是dest=theOrigin
在dest
具有与theOrigin
相同的结构时不起作用。
提前致谢!
答案 0 :(得分:3)
字段origin
是嵌入字段。应用程序可以使用以下代码设置字段:
func (dest *destination) LaunchTheDevice(theOrigin origin) {
dest.origin = theOrigin
}
嵌入字段的名称与类型名称相同。