go开发日记001-环境搭建问题

Posted 削梨杜月笙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go开发日记001-环境搭建问题相关的知识,希望对你有一定的参考价值。

2021.1008

第一个问题就是gopath理解不够
gopath是golang项目的工作目录

底下有src 用于存放源代码文件,未编译的go文件都放在这里

src源文件下对.go文件通过go build & go install之后自动生成bin文件夹 (有则不产生)

pkg目录是install自动产生的,放编译以后的包文件


go的环境变量大多都是和安装的go目录有关的,
GOROOT:Go的安装目录
GOPATH:用于存放Go语言Package的目录,这个目录不能在Go的安装目录中
GOBIN:Go二进制文件存放目录,写成%GOROOT%\\bin就好 其实也可以是工作目录的bin
GOOS:操作系统
GOARCH:指定系统环境,i386表示x86,amd64表示x64
PATH:需要将%GOBIN%加在PATH变量的最后,方便在命令行下运行Go

go env可查看更多相关信息

 

第二个问题是.mod文件的问题

  1.什么是go.mod

Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

Go.mod其实就是一个Modules,关于Modules的官方定义为:

Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。

Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。

  2.使用(快速无讲解版)

  设置 GO111MODULE = on

  设置go proxy 为七牛云(可以不换就是镜像快慢问题)

  

 

 

举个例子

*\\workplace\\src\\firstproject 是我的工作目录

GOPATH=*\\workPlace   

那么在工作目录的src目录下创建新文件夹

cmd或IDE打开这个文件夹 在终端执行 go mod init 生成 .mod 文件,

module ex2

go 1.16

(这个时候还没有.sum文件)

 

 

 .mod文件是唯一标识这个项目的

 

编写一个 main.go里面引用了

github.com/deckarep/golang-set

然后执行了go mod tidy (拉取缺少模块 移除不需要的模块) 生成 .sum(内容如下

github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ=
github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=

)

main.go

package main
import (
	"fmt"
	"github.com/deckarep/golang-set"
)


func main() {
	requiredClasses := mapset.NewSet()
	requiredClasses.Add("Cooking")
	requiredClasses.Add("English")
	requiredClasses.Add("Math")
	requiredClasses.Add("Biology")

	electiveClasses := mapset.NewSet()
	electiveClasses.Add("Welding")
	electiveClasses.Add("Music")

	allClasses := requiredClasses.Union(electiveClasses)
	fmt.Println(allClasses) // Cooking, English, Math, Biology, Welding, Music

	fmt.Println(electiveClasses.Contains("Cooking")) //false
	fmt.Println(electiveClasses.Cardinality()) // 3
}

  

(具体作用可以查看 go help mod 这里给出一些简单的指令以及作用)

命令                    (说明)
download download modules to local cache(下载依赖包)
edit edit go.mod from tools or scripts(编辑go.mod)
graph print module requirement graph (打印模块依赖图)
verify initialize new module in current directory(在当前目录初始化mod)
tidy add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
vendor make vendored copy of dependencies(将依赖复制到vendor下)
verify verify dependencies have expected content (验证依赖是否正确)
why explain why packages or modules are needed(解释为什么需要依赖)



需要注意的是如果父文件夹存在.mod文件则子文件在mod init 和 mod tidy 的时候会出现$GOPATH/go.mod exists but should not

gopath 如果已经存在.mod文件则同级的目录及其子目录都会出现这样的情况

 

以上是关于go开发日记001-环境搭建问题的主要内容,如果未能解决你的问题,请参考以下文章

机器学习100天:001 开发环境搭建

机器学习100天:001 开发环境搭建

Go从入门到放弃

001——搭建OpenCV实验环境

Windows系统中搭建Go语言开发环境详解

go 语言开发环境如何搭建?