我的应用程序有一个类型事件:
type Event struct {
Id string
}
有时候我有这种类型的实例参考,有时没有:
var event *Event
但是函数需要这种没有指针的类型:
func ProcessEvent(event Event)
所以我不能使用我的指针var这个函数。也许有一个解决方案将*事件转换为事件?或者我需要重构我的代码以使所有没有指针?
我使用此解决方案,但我不喜欢它,因为我需要复制我的代码:
event2 := Event{
Id: event.Id
}
答案 0 :(得分:2)
要从指针转换,需要取消引用指针:*event
来自http://golang.org/ref/spec#Address_operators:
对于指针类型
x
的操作数*T
,指针间接*x
表示T
指向的类型x
的变量。如果x
为nil
,则尝试评估*x
会导致运行时出现紧急情况。