回答

收藏

如何编译由多个文件组成的Go程序?

技术问答 技术问答 283 人阅读 | 0 人回复 | 2023-09-12

我有一个由三个文件组成的小程序,都属于同一个包(主)。但是当我这样做的时候go build main.go,建设失败。只有一份文件 ( main.go) ,一切正常。
( y/ H4 Q) L9 N7 {* n; [) a现在我花了一些精力来分离代码,似乎编译器找不到main.go取出并放入另外两个文件(与 main.go 位于同一目录中)。这会导致。undefined 'type'错误。
. \; ^  c2 a" W- o9 }如何编译由多个文件组成的程序?
* v- b% P& _1 s  o                                                               
; I; M  s- |; C: f1 t$ H* Z    解决方案:                                                                2 p" U/ V9 g, Z+ g2 f+ Q& T
                                                                从 Go 1.从11  开始,不建议使用 GOPATH,使用 的新方法Go Modules。9 t% ]) c" B, x5 A% z
假设你正在编写一个叫 的程序simple:[ol]创建目录:[/ol]sh   mkdir simple   cd simple0 H$ q; N- J* _; Z$ ^, G
[ol]创建新模块:[/ol]sh   go mod init github.com/username/simple   # Here,the module name is: github.com/username/simple.   # You're free to choose any module name.   # It doesn't matter as long as it's unique.   # It's better to be a URL: so it can be go-gettable.1 z9 r4 @# W4 |3 k$ `/ O8 ~
[ol]将所有文件放入目录。3 n+ v  T/ I* w; B* ]
最后,操作:
# R( [* f  H" n  F[/ol]sh   go run .
  o& o, G, M5 C% f* P& J[ol]或者,您可以通过构建它来创建可执行程序:[/ol]```sh! i/ u& M4 D- M" D; c. Z
            go build .; G+ x! @$ z, ^; q7 C
# then:
9 B# k' f+ X, J1 z# e) [& H4 r            ./simple     # if you’re on xnix1 e  I. u+ G. A  W1 n
# or,just:
+ k! D7 n9 B8 g3 |            simple       # if you’re on Windows4 I4 h' J4 h6 ~
            ```$ j: S& F; [  ^& O1 M4 S8 {2 d5 D( R
您可以阅读更多信息。( {# n& K9 p/ X
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的。vgo 2018年 2 月发布。2018年 7 月,版本化模块登陆 Go 主仓库Go 1.在14 中,模块支持被认为并鼓励所有用户从其他依赖管理系统转移到模块。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则