1
aofei 2019-09-04 16:35:00 +08:00 3
1. 可以;
2. 使用了 Go modules 后所有的 import path 都得以 module path 开头,当前工作目录的话就以步骤 1 中的 module path 开头; 3. 如果你指的“其他目录”是别的模块的,同理步骤 2,如果指的是普通文件夹,那得用 `go mod replace` 替换为你的目标路径模块; 4. 现在大多数 IDE 的代码不全等 tools 都已经适配了 Go modules,所以基本可用; 5. 虽然我没用过 VSCode 的,但如果它有现成的 Go 插件的话那么可以直接使用,插件会自动处理,你只需将 `GO111MODULE=on` 即可。 |
2
aofei 2019-09-04 16:36:01 +08:00
我的天!!!我居然能回复别人了!!!我刚才好一阵子在 V2EX 上逛都没法儿回别人的 post ……说是得等我注册满 30 天才行😢……
|
3
fangdingjun 2019-09-04 16:45:25 +08:00
使用 gomodule, 你得能访问 proxy.golang.org 才行,哈哈
|
4
Hellert 2019-09-04 16:48:19 +08:00
比如你有 10 个 Projects,以前都只能放到 GOPATH 下,现在你放哪里都可以了。
|
5
aofei 2019-09-04 16:49:09 +08:00
@fangdingjun 推荐使用七牛云运行的 goproxy.cn 哦~做了全球范围的 CDN 加速,速度能快到让你吃惊~😊
|
6
lcode 2019-09-04 16:51:03 +08:00
官方不是推荐 dep 吗
|
7
wsseo OP @aofei
1.执行 go mod init 提示我一定要带 module "go: cannot determine module path for source directory /home/xxx/xxxx/xxxx/godemo (outside GOPATH, module path must be specified)" 2,3 大致理解了 4,5 go1.13 中 GO111MODULE 默认是 auto,vscode 代码没有补全提示 |
9
aofei 2019-09-04 16:57:02 +08:00
@wsseo
如果你是在你的项目根目录,且根目录包含了 .git 等 VCS 目录或者 Gopkg.lock 等旧版依赖管理文件,那么此时你 go mod init 时是不需要指定 module path,它会自己生成一个,不满意的话你到时候还可以再改。 |
10
aofei 2019-09-04 16:58:23 +08:00
@wsseo
vscode 自动补全的话…抱歉这个我确实不太了解,因为我没用过,我能告诉你的就只有现在大多数 tools 是已经支持 modules 了的,但你的 vscode 插件用到了哪些 tools 我就不清楚了😅 |
12
wsseo OP @aofei 1.是没有设置 VCS。不太理解 VCS 跟 go module 有什么关系,官方教程也是先创建了一个 git 仓库.
|
14
iPhoneXI 2019-09-04 17:13:26 +08:00 via Android
习惯了 Python pip,node npm 当然是 go mod 好用
|
16
2kCS5c0b0ITXE5k2 2019-09-04 17:24:04 +08:00
@aofei 貌似有些分类是需要 30 天 有些不需要
|
18
StarUDream 2019-09-04 17:53:01 +08:00
go mod 变得越来越好了,现在挺好用的。
|
19
aofei 2019-09-04 17:53:15 +08:00
@wsseo
Go modules 和 VCS 并没有直接关系,就算不用 VCS 也是可以直接 Modules 的,但这种场景下你 go mod init 时就必须指定一个 module path 了,因为如果你不指定的话 go 没有参考依据,不知道怎么来。 |
20
Stevenv 2019-09-04 18:08:43 +08:00
module go-project
- 引用项目中某个目录(project/src/test): " go-project/src/test" - 引用第三包: "github.com/gin-gonic/gin" |
22
blless 2019-09-04 18:15:40 +08:00 via Android
正版 goland 搞起来啊 vendor 加 go mod 天下无敌,加上私有仓库的 GOPRIVATE,个人企业我觉得都覆盖 90%以上需求了。其他语言自建仓库那个才叫麻烦
|
24
ysicing 2019-09-04 18:23:20 +08:00 via Android
之前也是这样想。用了之后真香。
|
25
kiddingU 2019-09-04 18:26:17 +08:00
呵呵哒,你用了就知道
|
26
skiy 2019-09-04 18:29:52 +08:00 via Android
1.当你定义的 module 和 github.com 项目地址相同时,引入的当前项目路径跟正常的 gopath 没两样,即可以决定是否使用 go mod
2. 看文档 3. 在本项目中均可引入,方法同 2 4. vscode 得依靠插件 5. 肯定 init 初始化,tidy 是清理 gomod 引入包的,vendor (暂时没用过)最后使用 |
28
skiy 2019-09-04 18:32:37 +08:00 via Android
另外,你说 gopath 好用?当你 a 项目要用的扩展包是 v1 版本,b 项目要用 v2 版本时或者扩展包的 master 有更新时,你咋整?在家跟在公司的环境就变了
|
29
snxq1995 2019-09-04 18:34:54 +08:00 via Android
|
30
dbskcnc 2019-09-04 21:04:37 +08:00
说 gopath 比 go mod 好用那真的侮辱别人的智商,对于解决实际问题,go mod 比 gopath 好用 100 倍不止,光自动下载依赖这一点就值
lz 提的问题一部分是自己的问题,一部分是生态的问题,不过毕竟 go mod 确实新出,确实需要一些时间给人适应 |
31
reus 2019-09-04 21:07:28 +08:00
你都没掌握它的用法,就不要评价什么了
官方 wiki 就很好: https://github.com/golang/go/wiki/Modules |
32
solos 2019-09-04 22:55:08 +08:00
go module 感觉特别好用啊 以前用 glide 有时候有点小问题
|
33
T3RRY 2019-09-05 08:11:28 +08:00
go module 才是解决了 gopath 不好用的问题!
很奇怪为什么还在认为 gopath 好用 |
34
Hanggi 2019-09-05 08:15:43 +08:00
你问的这些问题都不是问题,谷歌搜一下就好了
|
35
SpiderShrimp 2019-09-05 08:55:04 +08:00
go 1.12 就该用 go module 了
|
36
lrh3321 2019-09-05 09:41:02 +08:00
go 1.12 暂时不打算升 1.13.不过早就用上 go module 了
|
37
linxl 2019-09-05 10:00:00 +08:00
就几个命令...
|
38
Pythondr 2019-09-05 10:47:56 +08:00
1. 理论上 go mod init 时的 module 名可以随便取, 但是如果是要作为一个包被其它项目引用,那么就必须遵守一定的规范了,不然到时候 go mod 是引用不到的。打个比方, 如果你的包是托管在 github 上, 那么你的 go module 名就应该是 github.com/xxx/package_name。
2. 导入当前项目的包也很简单, 就是将你的 go mod 名作为项目根目录就行了 3. 如果需要导入本地包的化,就需要用到 go mod 的 replace 了, 但是一般不推荐这么做,貌似 replace 只支持绝对路径,这就给协同开发带来了不便,所有建议把包都用 go mod 来管理吧。 5. init 是初始化 gomod, tidy 是下载引用包,清除无用包,vendor 是将项目中所有的引用包 copy 到当前项目下的 vendor 目录中来。 |
39
wsseo OP |
40
wsseo OP |
41
wsseo OP 补上 go.mod
module hehe go 1.13 require ( github.com/gin-gonic/gin v1.4.0 gopkg.in/ini.v1 v1.46.0 heiheihei v0.0.0-00010101000000-000000000000 papapa v0.0.0-00010101000000-000000000000 ) replace papapa => /home/sma/workspace/gowork/papapa replace heiheihei => /home/sma/workspace/gowork/heiheihei |
42
wsseo OP "gopls is currently in alpha, so it is not stable",不想折腾了。
|