1

我面临一个奇怪的问题,在使用 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��

去版本:去版本go1.12.5 darwin/amd64

启用 Go 模块化export GO111MODULE=on

文件夹结构:go.mod go.sum log.go main.go vendor

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

Go 模块初始化为go mod init

应用程序供应商go mod vendor

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

4

1 回答 1

2

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

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

Go 处理包而不是单个文件。Go 模块用于组织包。在官方文档中了解更多

于 2019-06-23T05:58:13.660 回答