我已经阅读了涵盖这个问题的各种文章,并且有很多不同的方法。我是 Go 的新手,我正在努力学习最佳实践,而不是一开始就选择一些不好的风格。
来自有课程的语言,我在学习 Go 等新语言时尽量不应用我多年来学到的一切。
这提出了我的第一点:在 Go 中使用包和文件夹来组织你的程序是否被认为是一种好风格?
从我到目前为止所读到的内容来看,有些人建议这样做,所以我选择了这样的结构(我的实际程序要大得多,因此符合“将代码移动到包”的方法):
.
├── bin
│ └── helloworld
└── src
├── github.com
│ ├── SOMEUSER
│ │ └── helloworld
│ │ ├── main.go
│ │ ├── main_test.go
│ │ ├── greeter
│ │ │ └── talker.go
│ │ └── person.go
因此,如您所见,我将一些新代码移到了一个单独的包中,在这种情况下将是greeter. 我在我的 main.go 文件中导入了这个包(我已经多次阅读,建议使用这种方法而不是像 那样进行导入import ./greeter):
package main
import "github.com/SOMEUSER/helloworld/greeter"
func main() {
greeter.Hello()
}
然后调用Hello()我的greeter包中的函数。到现在为止还挺好。
但是我的实际问题来了(假设上述结构是在 Go 中构建代码的推荐方式):
我现在如何使用在我的main包中的任何文件中声明的任何函数、结构等(在这里我有一些严重的怀疑,这是否是要走的路,没有双关语)?
所以让我们假设我在person.go调用中声明了一些结构Person。这个结构现在在我的应用程序的几个部分使用,最好也在我包含的(本地)包中使用它,如下所示:
package greeter
import "fmt"
func Hello() {
p := Person{Name: "Steve"}
fmt.Println(p.Name)
}
尝试构建它时,它会引发undefined: Person错误。
如果您能指出我正确的方向,并就 Go 中推荐的方法和风格启发我,我将非常感激。
皈依舞
莫回无
相关分类