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 这里给出一些简单的指令以及作用)
需要注意的是如果父文件夹存在.mod文件则子文件在mod init 和 mod tidy 的时候会出现$GOPATH/go.mod exists but should not
gopath 如果已经存在.mod文件则同级的目录及其子目录都会出现这样的情况
以上是关于go开发日记001-环境搭建问题的主要内容,如果未能解决你的问题,请参考以下文章