ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Go项目的环境变量

2021-08-20 14:02:53  阅读:163  来源: 互联网

标签:GOPATH github 项目 目录 golang go Go 环境变量 mod


设置GOROOT和GOPATH

GOROOT应为go的安装目录。
GOPATH可以设定为自己想要的位置,以后go项目需要的依赖库都会存放在这个路径下面。

GOPATH:

默认是 c:\ User \ 用户名 \ go。可自定义,该目录下有三个文件夹(如果没有,可以手动创建)

--- src 存放代码。

--- bin 编译生成的可执行程序。

--- pkg 编译时生成的对象文件。

 

介绍go module及区分go

go get: 若是GOPATH设置的工程目录,代码在src目录下,然后在命令提示符中输入:go get
github.com/astaxie/beego,这样就在src目录下生成了github.com/astaxie/beego包。
注意:在使用GoLand工具时,配置settings->Go->GOPATH->Project
GOPATH为当前工程目录

若是想要在其他位置新建go项目,就不得不更改系统变量GOPATH,将其设为新项目的位置,可能还要改goland中的GOPATH设置。

go mod是golang1.11后引入的package依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包管理。
之前主要是用GOPATH 和 Vendor,vendor相对主流,但现在官方更提倡go mod。

在GOPATH的目录下,新建项目文件夹,进入新建路径执行go mod init,在文件夹下生成go.mod文件,然后将需要引入外部包的go文件置于项目目录下,编译文件,就会把外部包下载到本地的GOPATH/pkg/mod目录下。
set GO111MODULE=off,GOPATH mode,查找vendor和GOPATH目录。
set GO111MODULE=auto,如果当前目录不在$GOPATH 并且 当前目录(或者父目录)下有go.mod文件,则使用 GO111MODULE, 否则仍旧使用 GOPATH mode。

注意:在使用GoLand工具时,不要配置Project GOPATH为当前工程目录,最好不要配置Project GOPATH,而是配置Module GOPATH

在使用模块的时候, GOPATH 是无意义的,不过它还是会把下载的依赖储存在 GOPATH/src/mod 中,也会把 go install 的结果放在 GOPATH/bin(如果 GOBIN 不存在的话)

 

GO Modules 使用

私人依赖包,如何处理

1. 创建模块的目录 ,并伸出go.mod 文件

mkdir modules

go mod  init modules

  

2. 创建自己的package目录 如 base 

module

    |--- main.go

    |---go.mod

    |---base

            |---testBase.go

  

其中main.go 的内容

package main

import "modules/base"

func main(){

    base.Test()

}

  

testBase.go 的文件内容

package base 

import "fmt"

func Test(){

    fmt.Println("Bast Test)

}

  

可以看到 在任何模块的个人package的引用都必须使用 module/ 开头的路径地址。

再任何文件的 import时,go会再当前目录向上级目录逐级查找go.mod文件,比较mod文件中的 module 名称是否与查找的引用包路径匹配,然后按照引用路径查找。

针对之前没有有使用过go mod 的项目,需要的操作步骤是

1.将原来的src 下的代码拷贝到某个GOPATH之外的目录中,比如 server

2.在server目录下 ,go mod init server ,当前模块的根目录即是 server

3.将其他文件里的个人定义的包的引用路径改为 server/XXX ,以便于可以从模块的根目录找到

4. 在命令行 执行 go build server ,可以刷新所有的引用包且编译出可执行文件

针对国内墙,无法取到某些package的情况

1. 使用 https://goproxy.io ,通过设置

 

 

2. 通过go mod  replace命令 

    比如golang.org/x 下面的package是无法再国内直接获取的,可以通过修改go.mod文件将地址替换为 github上的镜像,基本都可以找到

    在生产的go.mod 文件里添加  

replace (

    golang.org/x/crypto => github.com/golang/crypto latest

    golang.org/x/net => github.com/golang/net latest

    golang.org/x/sync => github.com/golang/sync latest

    golang.org/x/sys => github.com/golang/sys

    golang.org/x/text => github.com/golang/text 

)

这样就可以从GitHub上获取对于的包文件

相关文档:

1. https://roberto.selbach.ca/intro-to-go-modules/

这是Roberto Selbach大神写的这篇 Step by step的 go mod入门文章,非常好理解

2. https://github.com/golang/go/wiki/Modules

go mod的官方文档,想了解的多一点最好还是通读一下

3. https://roberto.selbach.ca/go-proxies/




标签:GOPATH,github,项目,目录,golang,go,Go,环境变量,mod
来源: https://www.cnblogs.com/saryli/p/15166162.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有