go(一)go语言基本介绍和安装
简介
Go(又称Golang[4])是Google开发的一种 静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫、罗勃·派克及肯·汤普逊于2007年9月开始设计Go,稍后伊恩·兰斯·泰勒(Ian Lance Taylor)、拉斯·考克斯(Russ Cox)加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,支持Linux、macOS、Windows等操作系统。 来自百科介绍.
在2016年,Go被软件评价公司TIOBE选为“TIOBE 2016年最佳语言”。[7]
很多公司在使用go语言,用go开发的非常出名的项目有 docker ,k8s ,InfluxDB ,OpenShift,Ethereum。
是云原生开发语言,也可以用来开发区块链项目。
go 官网链接 https://golang.google.cn/
中文相关文档 https://www.topgoer.cn/
特点
保持简单
go语言的设计理念是足够简单,比如关键字只有 25个。学习曲线平缓,容易入门。
代码的风格统一,减少语法上容易出现的错误。高性能
go 的性能接近于c / c++ 的执行性能
开发效率高
内置垃圾回收机制,不用手动控制内存释放, 同时有着和python差不多的开发效率。
支持并发
对并发具有非常好的支持。
版本说明
go从2012年的 1.0 版本 到 今天已经 到1.18 版本了。
一般情况下是一年发布2个版本。
历史版本查看 https://go.dev/doc/devel/release
安装
windows 环境下安装
下载安装包 https://go.dev/dl/

直接傻瓜式下一步 安装即可。
安装完毕后 在命令行执行
···
go version
go help
···

Linux 环境下安装
- 下载安装包 https://go.dev/dl/

- 下载的 tar.gz 包上传到服务器并解压
1 | tar -zxvf go1.18.3.linux-amd64.tar.gz |

- 配置环境变量
go.sh 专门用来管理go的相关环境变量
1 | vim /etc/profile.d/go.sh |
1 | #go |
1 | source /etc/profile |
- 测试
1 | go version |
注意:go path 这个环境变量在1.8 版本之前必须设置,1.8之后使用默认的即可
开发工具安装
go 可以使用多种开发工具开发,比如 IDEA,VS CODE 。
使用IDEA 来开发go
在IDEA中需要安装go的插件
file –> setting –> plugins –> marketplace

然后配置GO的相关设置
选择go root
配置go 代理
1 | GOPROXY=https://goproxy.io,direct |

开发hello Word
new Project –> 选择 go

新建src 目录.创建包,新建 hello.go
编写文件
1 | package main |
- 对于go 来说,函数是go中的一等公民,所以基本都是围绕函数来开发 func
- main 函数是程序的入口
- 需要注意 main函数的包名 packge 也必须是 main
- go 的main 函数不支持返回值
编译go文件
1 | go build hello.go |
将编译成一个可执行文件
直接运行 go文件
1 | go run hello.go |
直接运行结果不生成执行文件
main函数入参和返回值
main 函数不支持直接在函数声明上加入参数。但是可以通过os.Args 获取参数
1 | func main() { |
- os.Args 得到命令行输入参数
- os.Exit Exit 函数可以让当前程序以给出的状态码 code 退出。一般来说,状态码 0 表示成功,非 0 表示出错。
测试
通过自带的 testing 测试库可以方便的编写测试代码
示例:
type_test.go
1 | package test |
github.com/stretchr/testify/assert
1 |
import (
“testing”
“github.com/stretchr/testify/assert”
)
func TestSomething(t *testing.T) {
var a string = “Hello”
var b string = “Hello”
assert.Equal(t, a, b, “The two words should be the same.”)
}
参考链接:
- <http://www.muzhuangnet.com/show/20452.html>
- <https://zhuanlan.zhihu.com/p/486942164>
- https://blog.51cto.com/u_15238921/5379581

