我正在学习使用PHP成为我最好的游泳池(我的游泳池是一个儿童游泳池:HTML,CSS,PHP,JavaScript,SQL)。我从来没有真正陷入像C,C ++等那些可怕的大骗局。我认为Go会是一个良好的开端。
假设我有结构:
|App
|server.go
----|Controllers
-------|main.go
在PHP中,包含一个文件意味着您可以访问父文件中的内容以及所有以前包含的文件。(取决于几个方面,但大多数情况下)。
在Go中,如果我在server.go中有这个。
package main
import (
"REST/Controllers"
"fmt"
)
type test struct {
Number int
}
var TestVar = test{}
func main() {
controllers.Log()
}
是否可以在我的Controller / main.go中访问TestVar?我试过但我似乎无法找到。以下代码抛出一个未定义的var错误:
main.go
package controllers
import (
"fmt"
)
func Log() {
fmt.Printf("%q", TestVar)
}
我唯一的另一个想法是通过一个函数传递它,但是如果我想在TestVar中实际更改一个值呢?我对语言的了解不多,所以我对指针和所有这些都不太了解。如果我有10个变量,每次都不会将10个变量传递给函数变得太麻烦了?
请记住,我来自PHP,因此几乎所有脏东西都是糖涂层的。
感谢您的帮助。
答案 0 :(得分:2)
答案 1 :(得分:0)
扩展@SirDarius所说的不会过度整理代码结构的内容。
Go项目通常有一个包含源的目录。每个文件都像一个模块,就行而言可能相当长。每个目录都是一个项目,也是子目录!它们是子项目。
按照这个想法,Controllers是一个子项目吗?不,它是实际项目的一部分。所以把它放在父目录中。如果你有一些可以在这个包之外重复使用的代码,你可以制作一个新包或一个子包(最适合的地方)。
一般来说,简化!不要创建目录来组织类似的功能,但可以将它们放在一个文件中进行分组。
在您的情况下,在根目录中有main.go
和log.go
。除非您要创建通用日志记录包,否则请创建一个名为log的目录,其中包含main.go
。但这将是一个独立的包,因此它不需要从另一个或父包中获取变量。如果您似乎仍需要该var,请将其作为配置传递。