go语言之 go简介及go开发工具安装

本文详细介绍了Go语言的基本概念、优势和适用场景,并指导读者如何安装Go编译器,设置环境变量,安装VSCode以及Go扩展。通过实际操作演示了在VSCode中创建和运行Go程序的步骤,包括使用Coderunner扩展和脚本方式。此外,还解决了GOPATH路径不生效的问题以及调整VSCode字体大小的方法。
摘要由CSDN通过智能技术生成

Go 语言之 开发工具

一: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 的安装路径,其他全部默认,点击下一步即可

image-20220314211217577

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

image-20220314211456469

设置和修改环境变量

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

image-20220314212331390

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

image-20220314211736255

image-20220314211746697

image-20220314211810868

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

这两个我们都要删除

image-20220314211937378

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

image-20220314212515490

image-20220314212605744

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

image-20220314212709063****

image-20220314212829940

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

image-20220314213019468

image-20220314213058650

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

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

image-20220314213343313

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

image-20220314213714922

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

安装

image-20220228112032120

image-20220228112104768

image-20220228112117454

image-20220228112131795

image-20220228112141081

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

image-20220228112304062

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

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

此时会自动加载src文件夹

image-20220314214110547

image-20220314214133831

image-20220314214148231

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

image-20220314214707520

image-20220314214733151

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

image-20220314214902968

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

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

image-20220314215238044

image-20220314215303439

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

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

image-20220314215457864

image-20220314215655760

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

image-20220314220017904

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

变量名: GOPROXY

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

image-20220314220204892

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

image-20220314220452879

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

image-20220314220608004

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

image-20220314221141959

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

image-20220314221544655

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

编写程序

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

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

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

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

image-20220315000223834

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

image-20220315000259156

运行程序

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

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

image-20220315000534521

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

image-20220315000631892

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

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

image-20220315001024481

进入到脚本所在的目录

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

 go run .\text.go

image-20220315001115599

image-20220315001240579

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

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

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

image-20220315001655446

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

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

// 对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'

image-20220315002210518

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

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

image-20220315002636094

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

image-20220315002815919

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

image-20220315002914325

五 附录

GOPATH路径不生效

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

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

image-20220314211937378

调整vscode的字体大小

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

image-20220315004602838

image-20220315004615074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值