我只是在学习 Go,这里有一些我无法理解的行为:package mainimport "fmt"type Message interface { SetSender(sender string)}type message struct { sender string}type Join struct { message Channel string}func (m message) SetSender(sender string) { m.sender = sender}func main() { var msg Message msg = Join{} msg.SetSender("Jim") fmt.Printf("%s", msg)}这会打印{{} },因此SetSender调用似乎没有生效。我怀疑它以某种方式对 的副本进行操作message,但我无法弄清楚这样的副本来自哪里。我尝试更改SetSender以进行操作,*message但无法编译。游乐场:http : //play.golang.org/p/yNdnM1bfSG也欢迎提供替代设计模式的建议。我有几种类型的消息(仅Join在此处显示),但它们都有一些共同的字段(仅sender在此处显示)。我想避免为每种消息类型编写和导出单独的构造函数,所以如果我能继续导出类型本身,那就太好了。
1 回答
- 1 回答
- 0 关注
- 158 浏览
添加回答
举报
0/150
提交
取消