【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, 世界!")
}

有两种方式执行:

  1. 在项目根目录下执行go build构建项目,会生成一个hello文件;运行生成的./hello,终端打印出Hello, 世界!
  2. 直接运行命令go run hello.go来执行程序

Golang的包Package

与Python、Java等语言不同,在Golang中,import导入的是目录,而不是包名。而且,Golang没有强制要求包名和目录名需要一致。这一部分的介绍可以参考[Go] 路径、目录名、包名、文件名
Golang中使用import引入其他的包。编译器导包的顺序如下:
GOROOT->项目所对应的GOPATH->全局GOPATH
如果都无法找到,编译器将会报错。



Reference

  1. go环境变量配置 (GOROOT和GOPATH).https://www.jianshu.com/p/4e699ff478a5
  2. Golang入门(1):安装与配置环境变量的意义.https://juejin.im/post/5e899860518825737d49cdc6
posted @ 2020-07-27 12:03  LvJC  阅读(222)  评论(0编辑  收藏  举报