关于go module

2020-04-24  本文已影响0人  nnnnxcj

2020.04.29 更新 =======
关于 goland 使用 go module 的最佳实践,参见https://mp.weixin.qq.com/s/CbCbtu-CX9G_FHb2juMjXA
新建工程,GoLand -> Preferences -> Go -> Go Modules 勾选“enable go modules intergration”
在当前工程目录下,go mod init 你的包名,之后:

  1. 直接run工程时,你引用的外部包会自动添加进go.mod
  2. 在工程中想引入自己的库,在go文件中import “你的包名/*****”即可找到

注意:

之前内容 =========

GO111MODULE

输入go env

GO111MODULE="on"

含义:

GO PROXY

GOPROXY环境变量是伴随着modules而生,在go1.13中得到了增强,可以设置为逗号分隔的url列表来指定多个代理,其默认值为https://proxy.golang.org,direct。
direct:表示直接连接,所有direct后面逗号隔开都proxy都不会被使用。
这里可以设置GOPROXY=https://goproxy.io

一般默认没有开,开启方式:
Go版本>=1.13时,使用
go env -w GO111MODULE=on
(<1.13版本的方式)编辑下面的文件,export 设置,然后source文件
vim /etc/profile
vim ~/.zshrc
vim ~/.bash_profile (Linux找环境变量的先后顺序)
注意:在goland里的terminal使用go env 修改不了,会提示冲突,而且如果在preference中勾选里enable gomod,go env出来就是GO111MODULE=on

使用go module导入自己编写的包

工程目录结构如下,


试图在main.go文件中引入modpkg的hello.go的Hello方法和world.go的World结构体

hello.go world.go
  1. goland设置
    GoLand -> Preferences -> Go -> Go Modules
  1. 在工程目录下打开终端
    go mod init mymod
    路径下生成 go.mod 文件

  2. 在 main.go 中引入

package main

import (
    "fmt"
    "mymod/modpkg"
)

func main()  {
    modpkg.Hello()
    aa:=modpkg.World{}
    fmt.Println(aa)
}

运行结果:

注意:打开go module go get 到的是最新带版本号的包(所以一直开着就完事儿了)

参考:https://blanklin030.github.io/2019/12/05/go-mod-hello/

上一篇下一篇

猜你喜欢

热点阅读