• lesserror
    2021-10-27
    Tony Bai 老师这一讲的内容很实用,可以说有很多Go教程都没有涉及到这块知识的归纳总结。 麻烦老师抽空回答一下我以下的疑问: 1. 空导入的方式的作用吗?我看很多源码中有使用这种包导入的方式。 2. 在go module构建模式下,怎么对vendor目录的有无进行取舍呢?老师有什么实战建议呢?

    作者回复: 问题1: 像下面代码这样的包导入方式被称为“空导入”: import _ "foo" 空导入也是导入,意味着我们将依赖foo这个路径下的包。但由于是空导入,我们并没有显式使用这个包中的任何语法元素。那么空导入的意义是什么呢?由于依赖foo包,程序初始化的时候会沿着包的依赖链初始化foo包,我们在08里会讲到包的初始化会按照常量->变量->init函数的次序进行。通常实践中空导入意味着期望依赖包的init函数得到执行,这个init函数中有我们需要的逻辑。 问题2: 通常我们直接使用go module(非vendor)模式即可满足大部分需求。如果是那种开发环境受限,因无法访问外部代理而无法通过go命令自动解决依赖和下载依赖的环境下,我们通过vendor来辅助解决。

    共 8 条评论
    34
  • blur
    2021-10-28
    go mod edit -require=github.com/sirupsen/logrus@v1.7.0这个指令在win 上的golangd好像会因github 后面的那个 . 识别不出来path,加引号变成 go mod edit -require="github.com/sirupsen/logrus@v1.7.0"就可以了

    作者回复: 感谢提供不同平台的差异。

    共 2 条评论
    25
  • Aaron Liu
    2021-10-27
    如果之前引用的包是v1,之后升级v2,go get可以替换引用的包,但源码里的import要怎么改,如果很多go文件都引用了呢

    作者回复: 源码中必须要改,改为xxx/v2。这个要么手动改,要么使用IDE/编辑器提供的工具进行统一替换。

    共 6 条评论
    17
  • return
    2021-10-27
    老师讲太好了, 有主线 有关键细节, 请教老师, 关于vendor, 存好副本后, 一般在其他地方怎么用呢, 手动传输过去 还是 上传到代码库再下载呢

    作者回复: 如果采用vendor模式,建议与项目代码同等对待,一并上传的代码仓库中。其他地方直接下载使用。

    共 2 条评论
    13
  • 女干部
    2021-12-01
    老师你好, 有一个疑问困扰我很久了,这样一个例子: 安装 go get -u github.com/cweill/gotests/... 然后就可以在命令行里执行 gotests了, 我想知道/...这是个什么写法, 还有gotests.exe,是怎么构建并被放到我的%USERPROFILE%\go\bin目录下的 辛苦

    作者回复: 1. ...表示gotests下面的所有的包 2. go get会下载gotests下面所有的包,如果gotests是一个可执行文件的项目(带有main包main函数). go get会在下载包之后构建这个项目并把可执行文件放入$GOPATH/bin下。

    
    12
  • 运维夜谈
    2021-12-22
    老师这个专栏绝了,真的收获很大! 老师,想请教个问题,在一些无法连接外网的环境下,Go Module有没有类似maven和Nexus一样可以搭建自己的私库,然后私库去连接外部代理去下载依赖?

    作者回复: 目前私有代理做的比较好的有goproxy.io、goproxy.cn、athen等。我在后面的加餐中会聊到这个话题。

    共 3 条评论
    11
  • lesserror
    2021-12-17
    大白老师,如果我想升级go.mod中定义的Go版本的话,最佳实践是不是这么操作: go mod edit -go=1.17

    作者回复: 这个操作我觉得没啥最佳实践,我一般直接用vim打开go.mod文件,然后改就是了:)。

    共 2 条评论
    6
  • ll
    2021-11-17
    我是一名前端,初“卷”到go,对比 go module 对比 npm (node 的包管理): 1. vendor 类似于 node 项目中的 node_modules, 2. 默认条件下用 go get xxx 相当于 npm i -g xxx, 总之,我的方法就是结合新学的内容,和我熟悉的其他语言体系做对比;这样一是方便记忆,二可以更好的理解新知识。 老师的课条理清晰,深入浅出,点赞

    作者回复: 欢迎来到go世界。

    共 4 条评论
    6
  • Paradise
    2022-04-09
    Tony 的专栏不适合跳着看,因为细节干货太多啦哈哈,感谢老师

    作者回复: 👍。嗯嗯,尽量按顺序看。

    
    4
  • jacky
    2021-10-28
    讲得挺好,就是更新有点慢啊,这得更到啥时候

    作者回复: 一周三篇,已经很快了:)。写稿不易,欢迎继续、持续支持!

    
    4