我正在学习 Go,PHP 是我最好的池(我的池是儿童池:HTML、CSS、PHP、JavaScript、SQL)。我从来没有真正涉足过像 C、C++ 等大而可怕的领域。我认为 Go 会是一个不错的开始。假设我有以下结构:|App|server.go----|Controllers-------|main.go在 PHP 中,包含一个文件意味着您可以访问父文件中的内容以及已包含的所有先前文件。(取决于几件事,但在大多数情况下)。在 Go 中,如果我在 server.go 中有这个package mainimport ( "REST/Controllers" "fmt")type test struct { Number int}var TestVar = test{}func main() { controllers.Log()}是否可以在我的 Controller/main.go 中访问 TestVar?我试过了,但我似乎无法找到方法。以下代码抛出未定义的 var 错误:main.gopackage controllersimport ( "fmt")func Log() { fmt.Printf("%q", TestVar)}我唯一的其他想法是通过函数传递它,但是如果我想实际更改 TestVar 中的值怎么办?我对这门语言不是很了解,所以我对指针和所有这些都不太了解。如果我有 10 个变量,每次将 10 个变量传递给一个函数会不会太麻烦?记住我来自 PHP,所以几乎所有脏东西都为我涂上了糖衣。
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
扩展@SirDarius 所说的不要过度组织您的代码结构。
Go 项目通常有一个包含源代码的目录。每个文件就像一个模块,就行而言可能很长。每个目录是一个项目,也是子目录!它们是子项目。
按照这个想法,Controllers 是一个子项目吗?不,这是实际项目的一部分。所以把它放在父目录中。如果你有一些代码可以在这个包之外重用,你可以创建一个新包或一个子包(以最适合的为准)。
一般来说,简化!不要创建目录来组织类似的功能,而是通过将它们放在一个文件中来将它们分组。
在您的情况下,在根目录中有main.go
和log.go
。除非你想创建一个通用的日志包,然后创建一个名为 log 的目录,其中包含main.go
. 但这将是一个独立的包,因此不需要从另一个包或父包中获取变量。如果您似乎仍然需要该 var,请将其作为配置传递。
- 2 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消