回答

收藏

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

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

我有一个由三个文件组成的小程序,都属于同一个包(主)。但是当我这样做的时候go build main.go,建设失败。只有一份文件 ( main.go) ,一切正常。1 `# F! _6 i7 c1 q3 p- g' n0 ~
现在我花了一些精力来分离代码,似乎编译器找不到main.go取出并放入另外两个文件(与 main.go 位于同一目录中)。这会导致。undefined 'type'错误。/ W/ n$ i- F6 P8 ]
如何编译由多个文件组成的程序?
! _2 g. `3 D- p  I; u                                                               
' \% n5 x0 R; m4 W    解决方案:                                                               
5 F- D; d- F! q1 d5 B9 V7 g                                                                从 Go 1.从11  开始,不建议使用 GOPATH,使用 的新方法Go Modules。
% b/ i  K* z. r: L! i假设你正在编写一个叫 的程序simple:[ol]创建目录:[/ol]sh   mkdir simple   cd simple
2 V9 [" w' m8 }& p6 k  U( Y: M+ t: X[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.2 m. l5 }' }/ p& B' J# z  b
[ol]将所有文件放入目录。3 i4 F+ N' ~: ~! x1 @
最后,操作:
" r# u+ d: k3 \7 F: |+ @[/ol]sh   go run .
  B. d+ v6 e; _3 C" }% [, t[ol]或者,您可以通过构建它来创建可执行程序:[/ol]```sh
/ \9 L. v) z5 k$ p            go build .4 ?1 Z" [& a2 _! n$ u* [. ?% W7 o
# then:. x4 m; ~$ J3 d1 U* ]! c* n
            ./simple     # if you’re on xnix
& _5 t% J4 L4 o! [# or,just:5 ^4 j% o! _% a/ C" @1 C3 X) ?
            simple       # if you’re on Windows
2 ~/ H* H" _+ Y' I4 Y/ I            ```8 [! p$ O- }% M+ k8 Y; I0 Q8 D
您可以阅读更多信息。( z4 E7 p$ {- l
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的。vgo 2018年 2 月发布。2018年 7 月,版本化模块登陆 Go 主仓库Go 1.在14 中,模块支持被认为并鼓励所有用户从其他依赖管理系统转移到模块。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则