【Go】Go语言开发环境安装

导入

安装环境:Winowds

我现在是win7安装的,与win10整体步骤是一样的,只是部分显示的时候有点差异不影响;

【名词】

编译器:先将代码编译成可执行文件,再执行; —全文翻译

适用语言:

  • C
  • C++
  • Java
  • Go

解释器:不用将代码编译,直接可以执行; —实时翻译

适用语言:

  • Python
  • PHP
  • JavaScipt
  • Ruby

资源

官网:https://golang.google.cn/dl/

论坛:https://studygolang.com/

官网首页

Windows的安装包

当前最新的版本: go1.20.2

安装

安装

安装完成

查看安装文件

测试验证切换路径至bin文件夹下:

go version

log :

D:\software_install\Go\bin>go version
go version go1.20.2 windows/amd64

配置环境变量

**目的:**便于后期go编译器的运行,无需手动指定go 的安装位置;

方法:

计算机—属性—高级系统设置—环境变量,进来的时候发现已经配置了,可能是现在的版本安装内置功能实现环境变量的配置了,那就不用我们大刀阔斧的乱操作了


随便切换一路经,试试环境变量配置是对不对,一顿简单操作下。

查看安装版本

C:\Users\ws>go version
go version go1.20.2 windows/amd64

查看环境

检查go环境

go env

E:\GoProject\src\utils>go env
set GO111MODULE=auto
set GOARCH=amd64
set GOBIN=E:\GoProject\bin
set GOCACHE=C:\Users\ws\AppData\Local\go-build
set GOENV=C:\Users\ws\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=E:\GoProject\pkg\mod
set GONOPROXY=

其他配置

创建一个目录

这个目录作用:后期关于go的所有项目资源与源码都存放在这个位置,便于代码的管理;

binpkgsrc
E:\GoProject
 - bin
 - pkg
 - src
 
解释:
bin : 执行`go install`生成的exe文件的路径
pkg : 执行`go install`生成的包文件会存放在pkg文件夹下【下面有介绍】
src
- asset
	manage.go
- business
	opr.go

环境变量配置

GOBIN

GOPATH

GOROOT

简单解释下上面的环境变量们:

go install

GOPATH:用来指定开发项目所在地址, 工作 路径;

GOROOT: 用来指定 go 的安装路径。

代码测试

编写

firstapp.go
package main

import "fmt"

func main(){
	fmt.Println("hello go")
}

运行

app.go

方法1:

命令运行

go run app.go
E:\GoProject\src\first>go run app.go
hello go

方法2:

编译运行

执行命令:

go build

运行的时候出现了一些小的插曲:

E:\GoProject\src\first>go build
go: go.mod file not found in current directory or any parent directory; see ‘go help modules’

接下来我们就逢山开路遇水搭桥,遇到问题就去勇敢的面对它,并解决之;

原因分析:
go 的环境配置问题。与 golang 的包管理有关。

解决方案:
如果你是 Windows 系统,快捷键 “Win+R”,输入cmd,打开终端。输入:

go env -w GO111MODULE=auto

解释:
GO111MODULE 是 Go 1.11 引入的新版模块管理方式 ,在1.12版本中正式支持,它是Go语言官方提供的包管理解决方法。

GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto。

  • GO111MODULE=off
    无模块支持 ,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。

  • GO111MODULE=on
    模块支持 ,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 也可以解释成go 忽略 $GOPATH 文件夹,只根据 go.mod 下载依赖。

  • GO111MODULE=auto

    默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
    (1)当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
    (2)当前文件在包含go.mod文件的目录下面。

    在 $GOPATH/src 外层且根目录有 go.mod 文件时,开启模块支持;否者无模块支持。

Go mod使用方法
//初始化模块:
Go mod init <项目模块名称>

//依赖关系处理,根据go.mod文件
Go mod tidy

//将依赖包复制到项目的vendor目录
Go mod vendor

//显示依赖关系
Go list -m all

//显示详细依赖关系
Go list -m -json all

//下载依赖
Go mod download [path@version]

go build

E:\GoProject\src\first>go build

E:\GoProject\src\first>

这次就没有报错了,看看我们执行完这个命令后发生了什么变化

E:\GoProject\src\firstfirst.exefirst.exe
E:\GoProject\src\first>first.exe
hello go

这次很清晰的看到控制台输出的结果就是我们想看到的数据;

补充:

刚才双击exe文件闪现的原因:

1.主要是命令执行太快,执行结束后,生命周期也结束了,终端自然就退出了;通过cmd命令终端这个问题就可以避免了,如果实现想通过双击实现exe文件的运行,需要稍微加一下等待,代码可以这样改:

package main

import "fmt"
import "time"

func main(){
	fmt.Println("hello go")
	time.Sleep(5 * time.Second)
}
build指定名称
go build-o xxx.exe
E:\GoProject\src\first>go build -o  aaa

E:\GoProject\src\first>aaa
'aaa' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

E:\GoProject\src\first>go build -o  aaa.exe

E:\GoProject\src\first>aaa.exe
hello go

E:\GoProject\src\first>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WoIpNKsD-1678612696572)(【Go】Go语言开发环境安装.assets/1678608302838.png)]

上面方式1与方式2两种运行方式本质上是相同;

方式3:

执行命令:

go install
go installbin

pkg

E:\GoProject\src\utilstools.go
package utils

func add(n1 int,n2 int)(ret int){
	return n1 + n2
}
go install
E:\GoProject\pkg\windows_amd64
go build、go install 区别

go build、go install 命令都是可生成可实行文件,了解它们的小区别以选择适合自己的。

go install 和 go build 在没有参数时运行,都会在当前目录下编译,如果当前目录是软件主程序(package main)

go build 会生成可实行文件放在当前目录中
go install 则会把它放到 $GOPATH/bin 中。
go install 还会把导入的依赖包编译到 $GOPATH/pkg,并缓存,如果包未做更改,下次编译则直接使用缓存。 go build 命令加参数 -i 也能达到go install 的效果。

如果当前目录是非主包,则go install 直接把编译结果安装到 $GOPATH/pkg。

如果项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分利用它对依赖包的缓存功能

总结

1.载go编译器;

2.安装;

3.在安装目录下就是go编译器相关的所有内容。

在安装命令下有bin目录中有一个go可执行文件,基于它来启动编译器。

  • 直接可以找到路径去找到它,然后运行,有点麻烦。
  • 将go的可执行文件添加到环境变量中,在任何位置打开命令终端都可以顺利运行。(这也是多数开发语言都要做的一个环境变量配置的操作,一次配置永久有效,前提是不重新安装系统,比如在java,python, node)

基于上面的设置,尽管可以实现go的开发,

如果想更方便的使用go编译器,还需要做进一步的设置:

xxx
 - bin
 - pkg
 - src

GOBIN : 用例保存编译后生成的可执行文件的路径;

GOPATH:用来指定开发项目所在地址, 编译后的可执行文件、包文件, 工作路径;

GOROOT: 用来指定 go 的安装路径。

编写代码,然后运行

写了两个项目:

  • first 编译后生成可执行文件
  • utils 编译后生成包文件

运行项目

  • go run xxx.go : 运行项目代码,内部会先编译并将编译后的文件放在系统的临时目录,然后再自动执行;
  • go build: 运行项目代码,手动编译并生成一个可执行文件,然后再自动运行。
  • go install:生成可执行文件+包文件,并且会将编译后的文件放在bin or pkg 目录下。