gpt4 book ai didi

go - 在 Golang 中使用属于另一个包的结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:15 25 4
gpt4 key购买 nike

在我的主包中,我有:

type InfoToSend struct {
id string
field1 string
field2 string
}

然后我调用方法发送:

err = rpc.SendValue(toSend.id, toSend.field1, toSend.field2)

我想将其重构为:

err = rpc.SendValue(toSend)

但在 rpc 包中,我无法访问 main.InfoToSend 结构。

func SendValue(info InfoToSend) error {
...
}

我们能做些什么?

最佳答案

让我们从逻辑上看一下。这属于什么域:

type InfoToSend struct {
id string
field1 string
field2 string
}

是属于main,还是属于rpc。它是要发送的信息,因此名称为 InfoToSend。将发送此信息的内容是什么?好吧,它似乎是远程过程调用的一部分。常识会把这个类型放在 rpc 包中,然后,当然。

解决方案很简单,将类型移动到 rpc 包并导出类型 + 字段:

type InfoToSend struct {
ID string
Field1 string
Field2 string
}

然后,从你的主包中,简单地在你的 main 包中写下:

err := rpc.SendValue(InfoToSend{
ID: "id",
Field1: "field 1 value",
Field2: "field 2 value",
})

工作完成。

关于go - 在 Golang 中使用属于另一个包的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922010/

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