go day 01

发布于:2025-04-05 ⋅ 阅读:(25) ⋅ 点赞:(0)

go day 01 配置go环境

install go on D:\huang\lang\go\
D:\huang\lang\go\bin\go xxx.go
# D:\huang\lang\go\bin 设置到环境变量
go
go version
# 创建任意一个目录,创建三个文件夹
# D:\huang\lang\goProject
bin、pkg、src
# 创建三个系统环境变量 GOROOT GOPATH GOBIN
# GOROOT D:\huang\lang\go 编译器的安装路径
# GOPATH D:\huang\lang\goProject 实际项目的目录
# GOBIN D:\huang\lang\goProject\bin go install 实际编译的二进制结果存放的目录
echo %GOROOT% %GOPATH% %GOBIN%
# 设置代理,这样在 Vscode 安装 package 时就不会失败。
go env -w GOPROXY=https://goproxy.cn,direct
# 测试是否生效
D:\huang\lang\goProject\src\crm
# app.go
package main
import "fmt"

func main(){
	fmt.Println("Hello world")
}
# go install app.go  
## D:\huang\lang\goProject\bin\app.exe
# go run app.go 
# go build 
## 没成功 go build -o xx.exe go: go.mod file not found in current directory or any parent directory; see 'go help modules' 百度一下
## go env -w GO111MODULE="on"
## cd D:\huang\lang\goProject\
## go mod init crm # -> D:\huang\lang\goProject\go.mod
## go build 
## go build -o xx.exe
D:\huang\lang\goProject\src\utils
# page.go
package utils

func Add(n1 int, n2 int) int {
	return 2222
}
## go mod init utils
go install # 包文件
# go build # bin 
# go install 的时候包名要从$GOPATH/src下面的目录开始写。 比如在src下面有一个项目project,下面有个tools包,应该写成这样: go install project/tools 按照上面这个原则,就会在$GOPATH/pkg下面生成a文件了。
# cd D:\huang\lang\goProject\src
# go install utils\page.go

go build:用于测试编译包,在项目目录下生成可执行文件(有 main 包)。

go install:主要用来生成库和工具。一是编译包文件(无 main 包),将编译后的包文件放到 pkg 目录下( G O P A T H / p k g )。二是编译生成可执行文件(有 m a i n 包),将可执行文件放到 b i n 目录( GOPATH/pkg)。二是编译生成可执行文件(有 main 包),将可执行文件放到 bin 目录( GOPATH/pkg)。二是编译生成可执行文件(有main包),将可执行文件放到bin目录(GOPATH/bin)。

# cd D:\huang\lang\goProject\src\crm
go build -o aa.exe
aa.exe
# cd D:\huang\lang\goProject\src\crm\test
# 不管是 go build 还是 go build test1.go go build test2.go 都不会产生额外文件。
# cd D:\huang\lang\goProject\src\crm
go install
这个时候产生 bin 目录以及 hello.exe 文件【这里有没有发现 之前在 hello 目录下的 hello.exe 自动被删了】
cd test
注意:go install 的时候包名要从 $GOPATH/src 下面的目录开始写。 比如在 src 下面有一个项目 project,下面有个 tools 包,应该写成这样: go install project/tools 按照上面这个原则,就会在 $GOPATH/pkg 下面生成 a 文件了
cd D:\huang\lang\goProject\src\
go install crm\test
go env -w GO111MODULE=off
# go引入自建包名报错 package XXX is not in std
根据配置信息,问题出在Go Modules的开启或关闭上。

当你运行 go env -w GO111MODULE= 时,它将清除 GO111MODULE 环境变量的设置,将其重置为空字符串。这将导致Go工具认为你的项目不使用Go Modules,因此它会尝试在GOPATH中查找包,但无法找到你的项目中的非标准库包。

当你运行 go env -w GO111MODULE=off 时,它将显式地将 GO111MODULE 设置为 "off",这意味着你禁用了Go Modules,并且Go工具会尝试在GOPATH中查找包。
# go env -w GO111MODULE=off