【Golang学习笔记】入门:环境变量与Package
Golang入门学习
环境变量
Golang的环境变量有GOROOT和GOPATH
GOROOT
GOROOT是Golang的安装路径,以mac为例,通过Homebrew安装好的Golang之后,可以配置局部环境变量。
export GOROOT=/usr/local/go
GOPATH
GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径,也就是自己创建Golang项目的工作目录。GOPATH是go命令常常需要用到的,如go run,go install, go get等执行的目标路径,这些命令所操作的目录,就是GOPATH。
GOPATH之下主要包含三个目录:
.(GOPATH)
├── bin
│ └── initdb
├── pkg
│ └── darwin_amd64
└── src
├── README.md
├── code
├── conf
├── github.com
├── go.opentelemetry.io
├── golang.org
├── google.golang.org
├── gopkg.in
├── gpool
├── httpserver
├── initdb.go
├── install.sh
├── logs
├── proto
├── rpcclient
├── tcpserver
└── utils
bin目录主要存放可执行文件; pkg目录存放编译好的中间库文件,主要是*.a文件; src目录下主要存放go的源文件(如.go .c .h .s等)。
在开发过程中,如果需要引用到其他的项目,使用import "github.com/jinzhu/gorm"
,将会引用到$GOPATH/src/github.com/jinzhu/gorm
这个项目。go get
命令所对应的效果就是给所选择的项目引入远程的包,可以理解为引入依赖。
以某个项目为例,其结构如下
而对于某个项目中,若有package main
,则这个go文件是主文件,将会被编译运行。
全局GOPATH与项目GOPATH
应该为每个项目都设置一个单独的GOPATH,这样项目在引用包的时候,会首先在GOROOT/src
中寻找,例如fmt
输入输出包,当无法找到的时候,会寻找PROJECT GOPATH/src
,如果还是无法找到,将会寻找GLOBAL GOPATH/src
,这样一来,我们就可以将一些通用的包放入全局目录中,其余的自行定义。既保证了项目文件的整洁,也保证了编译的正确性。
使用go env
命令可以查看GOROOT和全局GOPATH:
$ go env
...
GOPATH="/Users/jinchenglv/go"
GOROOT="/usr/local/go"
...
创建项目
mkdir gotest
cd gotest
touch hello.go
在hello.go
中编辑:
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界!")
}
有两种方式执行:
- 在项目根目录下执行
go build
构建项目,会生成一个hello
文件;运行生成的./hello
,终端打印出Hello, 世界!
- 直接运行命令
go run hello.go
来执行程序
Golang的包Package
与Python、Java等语言不同,在Golang中,import导入的是目录,而不是包名。而且,Golang没有强制要求包名和目录名需要一致。这一部分的介绍可以参考[Go] 路径、目录名、包名、文件名。
Golang中使用import引入其他的包。编译器导包的顺序如下:
GOROOT->项目所对应的GOPATH->全局GOPATH
如果都无法找到,编译器将会报错。
Reference
- go环境变量配置 (GOROOT和GOPATH).https://www.jianshu.com/p/4e699ff478a5
- Golang入门(1):安装与配置环境变量的意义.https://juejin.im/post/5e899860518825737d49cdc6