Golang,从子包中使用主包的结构或功能

问题描述 投票:0回答:2

我正在尝试编写一个包含多个子项目的Go项目。举个简单的例子,该项目如下所示

Main
 |- package one
    |- package one.one
    |- package one.two
 |- package two

从我的主包中,我可以通过导入它们来使用任何子包的任何功能或结构。但我的问题是如何从任何子包访问 main 的结构或函数。

go
2个回答
6
投票

通过导入 main.c 中的“子包”。但不要产生导入循环(在这种情况下重构您的代码)。

请注意,Go 有(几乎*)没有 _sub_package 的概念:这些都是普通包,目录布局对导出函数、类型、方法、字段、变量和常量的导入和可用性/可访问性没有没有影响。

*) 内部包和供应商包取决于目录布局。


0
投票
对我来说,实现此目的的一种方法是在包中“注入”一个值。这感觉像是一种很奇怪的方法,因为你必须在 main 中显式调用一个函数,但它有效:

package oneone var( x string ) //x is copied here, we can also pass a pointer if original value is needed func RegisterX(outsideX string) { x = outsideX } ------ package main func main() { ... x := "outside X" oneone.RegisterX(x) }
    
© www.soinside.com 2019 - 2024. All rights reserved.