go module 安装包的简单使用(goland)

这个装go 的包真是难搞,我特么两三天装个 gin 框架都装不了。c
但是我本地是科学&联网了的。也按照主流的那写方法配置了代理之类的,但就是失败再失败
最后,直接看到一个方法是直接配置 goland 的。我就想,本地命令行都不行,ide 能行?
抱着怀疑的态度,我在 goland 上面配置了一下。出乎医疗,居然可以了
看一下步骤:
配置 goland 的 module 安装模式

goland 配置 module 下载方式

生成 go.mod 文件
注意,我配置后并没有生效,运行当前程序,然后爆了个错:
需要手动创建 go.mod 文件

贴心的 goaland 已经帮我们提示了,点击他就弹出了 go.mod 文件
他会直接在当前根目录穿件一个 空的 go.mod

安装程序文件里出现的 或者 mod require 的包
然后 goland 会直接把我们所需要的 包直接安装到 gopath/pkg/mod 文件夹下了。

可能需要手动同步下包
‘可能安装后,还是识别不了,我们需要下面这样同步一下,安装包

点击 同步

同步成功
左边的 第三方库,也可以大开看到已经安装的包

安装完成后,go.mod 文件里面发现多了 require (xx 包 并且后面还有 版本号,666)

其他发现
这个过程还发现一点,只要你住洞修改 mod 文件,他都会自动把你添加的 包马上下载安装了。真是方便哇。

关于 go module 文档 https://github.com/golang/go/wiki/Modules

learnku : Go Modules 详解使用

简书: 使用Go module导入本地包

go module 模式下,导入本地包就和使用 python import 一样简单

moduledemo和mypackage两个包,其中moduledemo包中会导入mypackage包并使用它的New方法

  • 同一项目(目录)下:
    moduledemo
    ├── go.mod
    ├── main.go
    └── mypackage
    └── mypackage.go
具体文件内容如下:

mypackage/mypackage.go:

package mypackage

moduledemo/go.mod

module moduledemo

moduledemo/main.go:

import (
    "fmt"
    "moduledemo/mypackage"  // 导入同一项目下的mypackage包
)
  • 不在同一个项目下

├── moduledemo
│ ├── go.mod
│ └── main.go
└── mypackage
├── go.mod
└── mypackage.go

mypackage也需要进行module初始化,即拥有一个属于自己的go.mod

文件内容如下:
mypackage/go.mod

module mypackage

moduledemo/main.go

import (
    "fmt"
    "mypackage"
)

两个包不在同一个项目路径下,你想要导入本地包,并且这些包也没有发布到远程的github或其他代码仓库地址。这个时候我们就需要在go.mod文件中使用replace指令

在调用方也就是packagedemo/go.mod中按如下方式指定使用相对路径来寻找mypackage这个包

module moduledemo

go 1.14

require "mypackage" v0.0.0
replace "mypackage" => "../mypackage"   // 指定包的寻找路径

关于 mod 文件嵌套 mod 的目录结构,好像不建议这样使用 ,没意义的,因我 一个项目用一个 mod 就行了 ,其他子目录可以用 package xxx 就可以了, 引入包 就用 当前 module name/xxx 就行了

下面分享我使用 module 模式 测试的例子:


image.png

当前目录 grpc_demo 进入,执行 go mod init grpc_test
生成 下面的 go.mod 文件:


image.png
  • 新建 main.go

内容如下:

package main
import (
    "grpc_test/XXX"
    "grpc_test/aaa"
)

XXX.Xx()
aaa.A()

新建 aaa 目录,在 aaa 下新建 a.go

package aaa

import "grpc_test/XXX"
func A(){
    XXX.Xx()

}

新建 XXX 目录 , 在 XXX 目录 下新建 xx.go

package XXX

import (
    "grpc_test/aaa"
)

func Xx(){
    aaa.A()
}

ok ,上面的代码已经清楚的说明了, mod 模式下,一个工程项目的导入包的方式,很简答,哈哈哈

注意,上面我只是为了说明,导入包的方式, 出现了循环导入的情况,但这属于语法错误,导入包 ide 都是显示可以找到这个包的

Xx() 和 A() 循环导入了,是不对的哦

2020 goland版本 配置 goproxy 参考:
https://bobsong.cn/1230.html

常见的问题:


mod 顶层文件夹下,单个文件应该属于 mod init 后面的模块名字 或者 main, 如果要使用其他名字,那就 需要建文件夹了, 如图上的提示

mod 顶级目录下, 单文件 的package 声明 应该 是 mod module 的名字 或者 main 或者 新建目录,把文件放在里面 使用其他的 package 名字

这就有了那个问题就是: 同一个文件夹下的单文件应该属于同一个包, 她下面的子目录 包名字 可以是其他,但也同样递归的遵守这个 包名的规则。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352