【问题标题】:Go Module : main.go file is being overwritten after go buildGo Module : go build 后 main.go 文件被覆盖
【发布时间】:2019-11-05 01:10:12
【问题描述】:

我遇到了一个奇怪的问题,在使用 go 模块供应我的依赖项后,go build 命令会用随机数据覆盖 main.go 文件。

文件的开头如下所示:

����
H
H__PAGEZEROx__TEXTpxpx__text__TEXT��7�__rodata__TEXT��7Y��7__symbol_stub1__TEXT�V��V�__typelink__TEXT�V�(�V__itablink__TEXTP@V�
P@V__gosymtab__TEXT�JV�JV__gopclntab__TEXTKV
"KV�__DATApx�|px c
__nl_symbol_ptr__DATApx�pxs__noptrdata__DATA�sx���sx__data__DATA�&{���&{__bss__DATA �{��__noptrbss__DATA�}�2__DWARF�}�{��   __zdebug_abbrev__DWARF�}�{__zdebug_line__DWARF�}'W�{__zdebug_frame__DWARF;H���;8�__zdebug_pubname__DWARF�څ�K�ʃ__zdebug_pubtype__DWARF�&����__debug_gdb_scri__DWARF��6�ӄ__zdebug_info__DWARF���
�ӄ__zdebug_loc__DWARF䉑��y�__zdebug_ranges__DWARFU��ZE�H__LINKEDIT�}L���L��*�����,�r���Pu,u,x,xo�� /usr/lib/dyld8/usr/lib/libSystem.B.dylibh/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation`/System/Library/Frameworks/Security.framework/Versions/A/Security$

� Go build ID: "OLftMbjtv5aWMkI_0qrD/LhWRtD0wcaKFWRYSDOa9/7dFWcNOQ4BpWWqZQW07D/pkR9ABiz-SHIBaJIZ1ur"
 ����������UH��AWAVATSH���=|I��

Go 版本:go 版本go1.12.5 darwin/amd64

使用 export GO111MODULE=on 启用 Go 模块

文件夹结构: go.mod go.sum log.go main.go 供应商

仅供参考:只有 main.go 被覆盖,而不是 log.go。

使用 go mod init 初始化的 Go 模块

go mod vendor 销售的应用程序

不确定我是否做错了什么。任何帮助表示赞赏。

【问题讨论】:

  • 你具体使用什么命令?您是否将您的模块命名为main.go
  • 谢谢@JimB。这就是问题所在。我刚刚运行了go mod init,它创建了名为main.go 的模块。然后运行go build 将覆盖main.go 文件。将模块名称更改为 main(或 main.go 以外的任何名称)解决了这个问题。

标签: go build dependencies go-modules


【解决方案1】:

模块名称不应为 main.go,因为它是包内的文件。请在go mod init 中使用您的项目名称作为模块名称。

例如,如果您的项目根目录是 hello,请将您的包命名为 hello,而不是 main.go。 此外,如果您想反复使用该模块,请考虑使用您的存储库名称作为模块名称。

Go 处理包而不是单个文件。 Go 模块用于组织包。了解更多official documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2018-12-30
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多