Go 语言之 开发工具

目录

  • 一:Go语言介绍
  • Go 语言是什么
  • Go语言优势
  • null
  • Go 适合用来做什么
  • 二:Go语言开发环境和工具
  • go语言编译器安装
  • 安装
  • 设置和修改环境变量
  • 安装vscode
  • 三 vs加载goproject项目,下载go扩展
  • 四:编写和打包第一个GO程序
  • 编写程序
  • 运行程序
  • 运行程序方法一:(使用扩展code runner)
  • 运行程序方法二:(脚本方式运行)
  • 运行程序方法三(对程序脚本打包)
  • 运行程序方法四(对程序所在目录打包)
  • 五 附录
  • GOPATH路径不生效
  • 调整vscode的字体大小

一:Go语言介绍

Go 语言是什么

2009年11月10日,Go语言正式成为开源编程语言家庭的一员。


Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。


开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快的执行速度,而 Ruby 和 Python 这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也让开发更快速。


Go语言优势

  • 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
  • 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
  • 语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
  • 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC(内存垃圾回收机制)不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。
  • 简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
  • 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。
  • 内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。
  • 跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息。
  • 内嵌C支持,Go里面也可以直接包含C代码,利用现有的丰富的C库。


Go 适合用来做什么

  • 服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
  • 分布式系统,数据库代理器等。
  • 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。
  • 内存数据库,如google开发的groupcache,couchbase的部分组建。
  • 云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。


二:Go语言开发环境和工具

go语言编译器: 官方地址:https://golang.google.cn/dl/

链接:https://pan.baidu.com/s/1twRPDRR_oKyfxQhwKqk1ag?pwd=20n2 提取码:20n2

VSCode:

链接:https://pan.baidu.com/s/1WWfdqU1nvNJJDxnFLCHEXw?pwd=4e9c 提取码:4e9c



go语言编译器安装

安装

安装,只要注意 go 的安装路径,其他全部默认,点击下一步即可

go语言编程 源码 go语言编程软件_golang


安装完毕后,进入到go 的安装路径。在安装目录下,有个bin 目录,这个go的命令存放目录

go语言编程 源码 go语言编程软件_环境变量_02



设置和修改环境变量

在自己想要的位置,新建文件夹goproject ,用于存放项目。在goproject 文件夹下,新建文件夹src ,用于存放源码

go语言编程 源码 go语言编程软件_Go_03


右击此电脑---->属性----->高级设置--->环境变量

go语言编程 源码 go语言编程软件_Go_04

go语言编程 源码 go语言编程软件_golang_05

go语言编程 源码 go语言编程软件_go语言编程 源码_06


在用户变量中,有GOPATH,这里定义的路径,是我们扩程序下载存放的目录。 以及在PATH 路径中,定义了go的执行文件,路径。

这两个我们都要删除

go语言编程 源码 go语言编程软件_环境变量_07


新建系统变量。变量名: GOROOT ,变量值:go的安装目录

go语言编程 源码 go语言编程软件_go语言编程 源码_08

go语言编程 源码 go语言编程软件_go语言编程 源码_09


修改Path 路径,将go 的安装目录下的 bin 目录,加入到Path路径中

go语言编程 源码 go语言编程软件_go语言编程 源码_10

****

go语言编程 源码 go语言编程软件_go语言编程 源码_11


新建系统变量GOPATH,这个是go的环境变量,设置项目,源码的存放路径。变量名为GOPATH ,变量值为新建的goproject目录的位置

go语言编程 源码 go语言编程软件_环境变量_12

go语言编程 源码 go语言编程软件_go语言编程 源码_13


使用win+r ,输入 cmd ,打开windows的命令行

使用go version 查看go 版本,如果能够看到go 的版本号,说明path 路径生效

go语言编程 源码 go语言编程软件_Go_14


使用go env 能够查看到go的环境变量。此时可以看到GOPATH和GOROOT的值都是我们之前设置的

go语言编程 源码 go语言编程软件_go语言编程 源码_15

set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=F:\goproject\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=F:\goproject
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.8
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build3145478798=/tmp/go-build -gno-record-gcc-switches



安装vscode

安装

go语言编程 源码 go语言编程软件_golang_16

go语言编程 源码 go语言编程软件_golang_17

go语言编程 源码 go语言编程软件_环境变量_18

go语言编程 源码 go语言编程软件_Go_19

go语言编程 源码 go语言编程软件_go语言编程 源码_20


在安装完毕,启动进入后,可以选择安装中文包

go语言编程 源码 go语言编程软件_go语言编程 源码_21


三 vs加载goproject项目,下载go扩展

文件--->打开文件夹(Open Folder....)--->找到 goproject目录---->打开文件夹

此时会自动加载src文件夹


go语言编程 源码 go语言编程软件_Go_22

go语言编程 源码 go语言编程软件_go语言编程 源码_23

go语言编程 源码 go语言编程软件_go语言编程 源码_24


点击左侧的扩展,然后搜go ,安装GO

go语言编程 源码 go语言编程软件_go语言编程 源码_25

go语言编程 源码 go语言编程软件_环境变量_26


回到资源管理,选中src,然后点击新建文件夹,文件夹名,如dev_code

go语言编程 源码 go语言编程软件_环境变量_27


然后继续选中,在dev_code下继续创建文件夹,如day1,然后继续选中,创建文件夹example1.

此时,创建的文件依次递进。在目录goproject 的src 目录下,也会依次生成目录

go语言编程 源码 go语言编程软件_go语言编程 源码_28

go语言编程 源码 go语言编程软件_golang_29



在example1 目录先,新建文件 text.go ,文件需要以 .go 扩展名结尾

创建完毕后,会跳出弹窗,要求下载 go扩展。 但是因为是从github上下载,所以不一定会成功。此时需要配置代理

go语言编程 源码 go语言编程软件_go语言编程 源码_30

go语言编程 源码 go语言编程软件_Go_31


go 的代理地址网站:https://goproxy.io/zh/

go语言编程 源码 go语言编程软件_golang_32


打开环境变量设置,新建系统变量

变量名: GOPROXY

变量值:https://proxy.golang.com.cn,direct

go语言编程 源码 go语言编程软件_go语言编程 源码_33


设置完代理后,关闭vscode,重新打开,然后会再次弹出下载go扩展,点击下载全部install all

go语言编程 源码 go语言编程软件_go语言编程 源码_34

此时,在输出 栏,会告诉你 下载一下的插件

go语言编程 源码 go语言编程软件_Go_35


需要看到All tools successfully installed. You are ready to Go :). 才下载完毕。如果有扩展没有下载下俩,可以关闭vscode,然后重新打开,会自动弹出对话框,要求下载,然后重新下载即可

go语言编程 源码 go语言编程软件_golang_36


如果go扩展插件下载,出现报错Error:无法解析不存在的文件 ,可以不用管它,只要最终出现All tools successfully installed. You are ready to Go :).即可

go语言编程 源码 go语言编程软件_go语言编程 源码_37


四:编写和打包第一个GO程序

编写程序

在test.go中,编写以下程序(输出hello world)

// 定义一个包,每个go文件都要归属于一个包
package main

//导入工具包,可以使用包中的方法,函数。实现相关的功能
//输出语句,属于fmt 包
import (
	"fmt"
)

// 定义运行的主函数(每个程序都有主函数,是程序的唯一的入口。入口有且只有一个,出口可以有多个)
//函数名不可以乱写,必须是main
func main() {
	//使用fmt包里的Println功能。print打印, ln 表示自动转行的功能
	fmt.Println("hello world")
}

go语言编程 源码 go语言编程软件_golang_38



然后,按ctrl +s 保存。或者在 文件--->保存

go语言编程 源码 go语言编程软件_环境变量_39


运行程序

运行程序方法一:(使用扩展code runner)

扩展--->搜索code runner --->安装coderunner扩展

go语言编程 源码 go语言编程软件_golang_40


安装完毕后,返回test.go,页面,点击右上角的三角符号,运行程序。

go语言编程 源码 go语言编程软件_环境变量_41



运行程序方法二:(脚本方式运行)

在终端,以脚本的方式运行

go语言编程 源码 go语言编程软件_环境变量_42


进入到脚本所在的目录

cd .\src\dev_code\day1\example1\
ls

 go run .\text.go

go语言编程 源码 go语言编程软件_环境变量_43

go语言编程 源码 go语言编程软件_golang_44


运行程序方法三(对程序脚本打包)

将脚本进行构建成程序,然后运行程序

go build .\src\dev_code\day1\example1\text.go
ls
.\text.exe

go语言编程 源码 go语言编程软件_环境变量_45


运行程序方法四(对程序所在目录打包)

当一个目录下有多个脚本文件时,我们可以直接对目录进行构建

// 对example1 目录进行构建
go build .\src\dev_code\day1\example1

对整个目录构建,报错go: go.mod file not found in current directory or any parent directory; see 'go help modules'

go语言编程 源码 go语言编程软件_go语言编程 源码_46

Package包波浪线说明:这是因为gomod和gopath两个包管理方案,并且相互不兼容

即使项目在GOPATH 定义的路径中,GO111MODULE=on 仍然强制使用Go模块。仍然需要go.mod才能正常工作

go语言编程 源码 go语言编程软件_环境变量_47

go env

//获取到的环境变量如下

set GO111MODULE=on
set GOARCH=amd64  
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env  
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=F:\goproject\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=F:\goproject
set GOPRIVATE=
set GOPROXY=https://proxy.golang.com.cn,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.8
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build3492386364=/tmp/go-build -gno-record-gcc-switches


此时,我们可以关闭GO111MODULE

go语言编程 源码 go语言编程软件_环境变量_48

go env -w GO111MODULE=off
go env
//获取到的go 环境变量如下
set GO111MODULE=off
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=F:\goproject\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=F:\goproject
set GOPRIVATE=
set GOPROXY=https://proxy.golang.com.cn,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.8
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build2414259400=/tmp/go-build -gno-record-gcc-switches


注意,项目要在GOPATH定义的目录中


再次构建整个目录

go build .\src\dev_code\day1\example1
ls
 .\example1.exe

go语言编程 源码 go语言编程软件_环境变量_49



五 附录

GOPATH路径不生效

即使我们在系统变量里设置了GOPATH的路径,但是依旧不生效,使用go env 查看,获取到的结果也不是我们定义的

这是因为go 默认在用户 环境设置里 定义 GOPATH,并且,也在用户环境变量里 定义了PATH路径。这会覆盖系统变量。 我们需要 删除 用户环境设置里的 GOPATH以及用户环境变量里PATH变量里go 的那一部分

go语言编程 源码 go语言编程软件_环境变量_07



调整vscode的字体大小

文件--->首选项---->设置---->Font Size

go语言编程 源码 go语言编程软件_golang_51

go语言编程 源码 go语言编程软件_Go_52