回答

收藏

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

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

我有一个由三个文件组成的小程序,都属于同一个包(主)。但是当我这样做的时候go build main.go,建设失败。只有一份文件 ( main.go) ,一切正常。# c" p: i2 ?3 P
现在我花了一些精力来分离代码,似乎编译器找不到main.go取出并放入另外两个文件(与 main.go 位于同一目录中)。这会导致。undefined 'type'错误。
0 S/ x  k7 d7 b! G如何编译由多个文件组成的程序?
' t& A& h; w! R0 N1 S                                                               
# l6 h; P) g1 L( Q; B4 M    解决方案:                                                                & z9 i! r- M2 Z- D' G4 G
                                                                从 Go 1.从11  开始,不建议使用 GOPATH,使用 的新方法Go Modules。
5 v/ X: Q2 Q8 R! w+ x; K假设你正在编写一个叫 的程序simple:[ol]创建目录:[/ol]sh   mkdir simple   cd simple" Z2 F7 i1 R  q
[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.
* |( k5 ?9 o- A/ T[ol]将所有文件放入目录。
. R9 h; j1 W2 i5 n3 V) S最后,操作:
# d& d+ v  B- r6 E[/ol]sh   go run ./ W1 U9 w2 l6 ~- t0 s4 r3 x4 u
[ol]或者,您可以通过构建它来创建可执行程序:[/ol]```sh
' R0 w7 ~7 L* T  E6 R            go build .$ L3 y/ \% k( g& c% c7 b/ _
# then:- I2 U! [/ o$ L$ E2 g0 S
            ./simple     # if you’re on xnix' g' t! p% b) u: G8 @5 b: _7 ^
# or,just:
  m8 M$ Y* b4 p5 s            simple       # if you’re on Windows
6 |9 J+ g8 k5 E4 ^            ```
2 n- |. R& b) n/ b, a您可以阅读更多信息。
1 l, w: Z1 o2 g( r2 d+ g- F* j" ^从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的。vgo 2018年 2 月发布。2018年 7 月,版本化模块登陆 Go 主仓库Go 1.在14 中,模块支持被认为并鼓励所有用户从其他依赖管理系统转移到模块。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则