一、初识Go
1.1 简介
Go以C语言为原型,以及借鉴其他语言的一些特性来编写完成,其思想是“Less can be more(大道至简,小而蕴真)”,让事情变得简单,表现出深刻的工程文化。
1.1.1 优点
- -
- 自带gc
- 静态编译,编译好后,扔服务器直接运行
- 简单的思想,没有继承,多态,类等
- 丰富的库和详细的开发文档
- 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便
- 简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性
- 超级简单的交叉编译,仅需更改环境变量
1.1.1.1 语法特征
- -
- 自动立即回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
1.1.2 适用领域
- -
- 服务器编程,以前使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
- 分布式系统,数据库代理器等。
- 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。
- 内存数据库,如google开发的groupcache,couchbase的部分组建。
- 云平台,目前很多云平台在采用Go开发
1.2 开发环境(CentOS7)
1.2.1 Go 二进制安装
- -
- 官网:https://golang.google.cn/dl/ 下载二进制压缩包
wget https://studygolang.com/dl/golang/go1.13.12.linux-amd64.tar.gz
- 解压后,得到一个“go”目录
tar zxf go1.13.12.linux-amd64.tar.gz
ls
go go1.13.12.linux-amd64.tar.gz
- 把“go”目录放入指定位置
在Linux系统中放在/usr/local 目录下
/usr/local/go 即为Go语言的安装根目录
mv go /usr/local/
ls /usr/local/
bin etc games go include lib lib64 libexec sbin share src
在Windows系统中,放在C:\目录下
c:\go 即为Go语言安装根目录
- 添加环境变量
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/apps/go
export GOPROXY=https://goproxy.io
source /etc/profile
<!--环境变量-->
GOROOT: 包含Go语言的安装根目录的路径
GOPATH: 包含若干个工作区目录的路径
GOBIN: 包含用于放置Go程序生成的可执行文件的目录的路径
- 测试
[root@CentOS7-DEV go]# go version
go version go1.13.12 linux/amd64
[root@CentOS7-DEV go]# go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/apps/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build227142360=/tmp/go-build -gno-record-gcc-switches"
1.2.2 Vscode 二进制安装
- -
- 下载二进制安装包
wget https://vscode.cdn.azure.cn/stable/17299e413d5590b14ab0340ea477cdd86ff13daf/code-stable-1594838263.tar.gz
- 解压安装
yum install libScrnSaver
mkdir /home/system && tar zxf code-stable-1594838263.tar.gz -C /home/system
- 创建桌面启动图标
cp /home/system/vscode-1594838263/resources/app/resources/linux/code.png /usr/share/icons
cat /usr/share/applications/vscode.desktop
[Desktop Entry]
Name=Visual Studio Code
Comment=Multi-platform code editor for Linux
Exec=/home/system/vscode-1594838263/bin/code --user-data-dir=/home/vscode
Icon=/usr/share/icons/code.png
Type=Application
StartupNotify=true
Categories=TextEditor;Development;Utility;
MimeType=text/plain;
cp /usr/share/applications/vscode.desktop ~/桌面
安装如下扩展模块
- go
- Code Runner
1.3 命令行工具
1.3.1 go
- -
Go is a tool for managing Go source code.
Usage:
go <command> [arguments]
The commands are:
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get add dependencies to current module and install them
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Use "go help " for more information about a command.
Additional help topics:
buildmode build modes
c calling between Go and C
cache build and test caching
environment environment variables
filetype file types
go.mod the go.mod file
gopath GOPATH environment variable
gopath-get legacy GOPATH go get
goproxy module proxy protocol
importpath import path syntax
modules modules, module versions, and more
module-get module-aware go get
module-auth module authentication using go.sum
module-private module configuration for non-public modules
packages package lists and patterns
testflag testing flags
testfunc testing functions
Use "go help " for more information about that topic.
- go env用于打印Go语言的环境信息
- go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装
- go build用于编译我们指定的源码文件或代码包以及它们的依赖包
- go install用于编译并安装指定的代码包及它们的依赖包
- go clean命令会删除掉执行其它命令时产生的一些文件和目录
- go doc命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的
- go test命令用于对Go语言编写的程序进行测试
- go list命令的作用是列出指定的代码包的信息
- go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码
- go vet是一个用于检查Go语言源码中静态错误的简单工具
- go tool pprof命令来交互式的访问概要文件的内容
1.3.2 其它
- -
go命令和工具 详见《Go命令教程》 https://github.com/hyper0x/go\_command\_tutorial
有疑问加站长微信联系(非本文作者)