gpt4 book ai didi

go - 如何创建一个不会被复制且不能为空的函数参数

转载 作者:IT王子 更新时间:2023-10-29 02:00:49 26 4
gpt4 key购买 nike

在 golang 中,是否可以创建一个采用具有以下约束的结构的函数:

  • 不得复制该结构(它比较大)
  • 调用者不能传递nil

编辑:我尝试使用指针,但可以将其设置为空。我找不到任何关于如何使用引用的好文章,而且我似乎无法通过引用传递。

最佳答案

您可以创建微型结构包装器,它包含指向大结构的私有(private)指针并定义 Get 方法以允许获取这个大结构。在 Get 中,您检查指针是否为 nil 然后它会崩溃。

类似于:

type StructHolder struct {
target *BigStruct
}

func (s StructHolder) Get() *BigStruct {
if s.target == nil {
panic("target is nil")
}

return s.target
}

你为什么要这样做?我认为最好传递一个指针并检查它的值。

关于go - 如何创建一个不会被复制且不能为空的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com