Go环境变量和基础命令

Go语言中有一些重要的环境变量,包括$GOROOT、$GOPATH、$GOBIN
还有一些基础命令也非常重要:go run、go build、go install

Go环境变量介绍

windows系统中,可以不配置环境变量,有一个默认配置
$GOROOT:go安装目录
$GOPATH:go工作目录
$GOBIN:go可执行文件目录

示例:设置GOPATH为D:/gowork
工作区目录设置如下

|---D:/gowork
	|---src/  存放源码文件,代码包
	|---pkg/  用于存放归档(静态)文件(名称以.a为后缀的文件,库源码文件被编译后生成的文件);归档文件将被存放到平台相关目录下
	|---bin/  存放当前工作区中的Go程序可执行文件

当已经设置了GOBIN,bin目录就会变得毫无意义;当GOPATH中包含多个工作区路径,则必须设置GOBIN,否则无法成功安装GO程序可执行文件

在cmd中使用go env指令,可以查看go的全部环境变量
其中GOOS表示操作系统,GOARCH表示计算架构。例如$GOOS_$GOARCH可以是linux_amd64
pkg文件夹下的平台相关目录,指的就是$GOOS_$GOARCH

Go基础命令

源码文件

看基础命令前,我们先看看源码文件的概念
以.go为后缀,内容为go语言的文件被称为源码文件

命令源码文件

声明自己属于main代码包,且包含main函数的源码文件

库源码文件

不包含main函数的源码文件,被编译成.a静态文件,供其他包调用,相应的归档文件会被存放到pkg平台相关目录下;
权限控制:库源码文件中,函数方法首字母大写,则其他代码包可以访问该函数,若为小写,则只能被同一代码包访问

cannot refer to unexported name hello.myFunc
undefined: hello.myFunc

go run

用于运行命令源码文件,只能接受一个命令源码文件以及若干个库源码文件(只能是主包的)作为文件参数

参数:
-a 强制编译相关代码,不论它们的编译结果是否已是最新
-n 打印编译过程中所需运行的命令,但不执行它们
-p n 并行编译,其中n为并行数量
-v 列出被编译的代码包的名称(go1.3及以前,包含Go语言自带的标准库代码包,1.4不包含)
-work 显示编译时创建的临时工作目录,并且不删除它
-x 打印编译过程中所需运行的命令,且执行它们

目录结构如下
|---D:/gowork
	|---src/ 
		|---mytest/
			|---test.go
			|---hello2.go
		|---mypkg/
			|---hello.go
	|---pkg/  
	|---bin/  
//test.go内容
package main

import "mypkg"

func main() {
    mypkg.MyPrint1()
    MyPrint3()
}
//hello.go内容
package mypkg

import "fmt"

func MyPrint1() {
    fmt.Println("hello world")
}
//hello2.go内容
package main

import "fmt"

func MyPrint3() {
    fmt.Println("hello world3")
}

进入src目录,使用go run命令如下:

go run mytest/test.go mytest/hello2.go

因为hello2.go被命令源码文件test.go调用,且它是主包的库源码文件,因此在go run指令加上相应文件参数

go run的工作原理
先对命令源码文件编译加链接(生成可执行文件存放到临时文件夹)再运行,一般用于调试程序。使用-work指令则不会删除临时文件

go build

主要作用为测试编译
若包含命令源码文件,则会在执行目录下生成可执行文件

参数:
-a 所有涉及到的代码包都会被重新编译(不加此参数,则只编译归档文件不是最新的代码包)

go install

作用:先编译相关代码包(库源码文件),生成.a静态文件放入pkg平台相关目录中,若有主文件(命令源码文件)则最后编译主文件,再将可执行文件放到$GOPATH\bin中(若设置了$GOBIN,则放入$GOBIN中)

将命令源码文件及相关库源码文件作为参数,只有这些文件会被编译并安装

你可能感兴趣的:(go)