在Golang中取消引用指针变量为相同类型而不引用

时间:2015-07-23 05:14:32

标签: pointers go reference

我的应用程序有一个类型事件:

type Event struct {
    Id string
}

有时候我有这种类型的实例参考,有时没有:

var event *Event

但是函数需要这种没有指针的类型:

func ProcessEvent(event Event)

所以我不能使用我的指针var这个函数。也许有一个解决方案将*事件转换为事件?或者我需要重构我的代码以使所有没有指针?

我使用此解决方案,但我不喜欢它,因为我需要复制我的代码:

event2 := Event{
    Id: event.Id
}

1 个答案:

答案 0 :(得分:2)

要从指针转换,需要取消引用指针:*event

来自http://golang.org/ref/spec#Address_operators

  

对于指针类型x的操作数*T,指针间接*x表示T指向的类型x的变量。如果xnil,则尝试评估*x会导致运行时出现紧急情况。