Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pointers 将指针变量取消引用到Golang中未引用的同一类型_Pointers_Go_Reference - Fatal编程技术网

Pointers 将指针变量取消引用到Golang中未引用的同一类型

Pointers 将指针变量取消引用到Golang中未引用的同一类型,pointers,go,reference,Pointers,Go,Reference,我的应用程序有一个类型事件: type Event struct { Id string } 有时我会引用此类型的实例,有时没有: var event *Event 但函数需要不带指针的类型: func ProcessEvent(event Event) 因此,我不能将指针var用于此函数。也许有一种将*事件转换为事件的解决方案?或者我需要重构我的代码,让所有代码都没有指针 我使用此解决方案,但我不喜欢它,因为我需要复制我的代码: event2 := Event{ Id:

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

type Event struct {
    Id string
}
有时我会引用此类型的实例,有时没有:

var event *Event
但函数需要不带指针的类型:

func ProcessEvent(event Event)
因此,我不能将指针var用于此函数。也许有一种将*事件转换为事件的解决方案?或者我需要重构我的代码,让所有代码都没有指针

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

event2 := Event{
    Id: event.Id
}

要从指针转换,您需要取消引用指针:
*事件

发件人:

对于指针类型为
*T
的操作数
x
,指针间接
*x
表示
x
指向的
T
类型的变量。如果
x
nil
,尝试计算
*x
将导致运行时死机

“带引用的此类型”,请停止将指针视为“引用”来帮助自己。Go根本没有引用或通过引用传递。其他一些语言(如C++)有一种特殊的语法和引用概念,不同于指针。