了解Golang
Golang优缺点
- 优点
- 语法简单,易于学习,类C的语法、比C/C++简洁和干净。
- 自带GC, 方便使用
- 快速编译,高效执行
- 简单的依赖管理
- 并发编程
- 静态类型,同时有动态语言的特征(var声明)
- 标准类库,规范统一
- 缺点
- 不支持动态加载代码
- 发展时间短,生态还不够庞大
Go语言用途
- 巨型中央服务器领域
- 高性能分布式领域
- 游戏服务端开发
- 复杂事件处理
- 对实时性要求很高的软件开发
- 可以在Intel和ARM处理器上运行,也可以在安卓上运行
Go语言学习体系
Go语言基础入门
- 认识Go语言
- 基础语法
- 基础数据类型
- 复合数据类型
- 结构体
- 流程控制
Go网络编程
- 数据安全
- 数据结构和算法
- 并发编程
- Socket编程
- Go与数据库
Go后台分布式应用
- RPC技术
- 总线与缓存
- 分布式锁
- 服务发现
- 链路追踪
Go开发核心技能
- 函数
- 面向接口
- 反射
- 包与工程
- 标准库
- 日志
- 字符串处理
- 文件与系统
- JSON
10.Base64编码
Go的Web框架和前后端开发
- HTTP应用及Gin、Beego框架实现
- Javascript入门
- Web基础JQuery
- Vue框架入门
- Web UI
企业级项目开发和应用
- 用户统一管理和认证平台(类似开源的Openldap, AD域)。
- 容器云K8S二次开发
- 分布式定时任务平台开发
- 分布式CICD管理平台
- 多云管理平台开发
Go语言Linux环境安装
Golang环境安装
mkdir -p $HOME/softinstall/{golang,golangthirty}
tar -zxvf go1.18.1.linux-amd64.tar.gz -C $HOME/softinstall/golang
配置Go语言国内代理
goproxy
https://goproxy.io/zh/
七牛云
https://goproxy.cn
阿里云
https://mirrors.aliyun.com/goproxy/
阿里云的镜像源,有点不好用。建议使用七牛云
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
取消国内代理
go env -u GOPROXY
设置Go的环境变量
# vim /etc/profile
export GOROOT=$HOME/softinstall/golang # go软件安装路径
export GOPATH=$HOME/softinstall/golangthirty # go依赖包下载的路径
export GOBIN=$GOPATH/bin # go build之后,执行命令的路径
export GO111MODULE=on
export GOPROXY=https://goproxy.cn,direct
# export GOPROXY="https://mirrors.aliyun.com/goproxy/,https://goproxy.cn"
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加为系统的环境变量
保存并退出。
使环境变量立即生效
source /etc/profile
使用go env
命令查看golang相关的环境变量
设置Go环境变量的含义
- GOROOT是go的安装目录,go原生的工具在该目录下
- GOPATH通常存放第三方依赖库
- GOPROXY: 下载依赖库时走哪个镜像代理,可以公司内部自建镜像代理. 例如:
export GOPRIVATE=git.yuan.com,github.com/myyuan
- PATH下的二进制文件可以在任意目录下直接运行.
- 在
$GOPATH
目录下创建三个子目录:src, bin, pkg
Go Modules依赖包查找机制
- 下载第三方依赖包存储在
$PATH/pkg/mod
目录下. go install
生成的可执行文件存储在$GOPATH/bin
下。- 依赖包的查找顺序:
- 工作目录
$GOPATH/pkg/mod
$GOROOT/src
第三方依赖库下载方法
go get -u gonum.org/v1/gonum/stat
vscode编辑器环境配置
mkdir goprojects/learngo/week1
cd goprojects/learngo/week1
go mod init week1
踩过的坑,记录一下:
vscode提示 gopls的root workspace的问题处理:
下面shell这一部分建议不要进行操作。
# 如果执行以下命令,将导致自己写的包无法被导入和执行.
# go work init
# mkdir tools
# go work use tools $GOPATH/pkg/mod/golang.org/x/tools/gopls@v0.8.3
要进行下列操作:
需要在$GOPATH
的src目录下创建一个目录和一个go文件
mkdir $GOPATH/src/hello/
cat <<-EOF > $GOPATH/src/hello/hello.go
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
如果不解决这个问题,如果main.go
引入了自定义的包, 运行main.go
代码时,会报错:
main.go:5:2: package week1/yuans is not in GOROOT($GOROOT/src/week1/yuan1)
默认就会从$GOROOT/src
目录下去找。因为这个是自定义的包,肯定不可能在$GOROOT/src
目录下找得到的。 这也是一个坑。
解决vscode的这个坑,浪费了我三个小时时间。建议新手使用golang集成的IDE。
至此, Golang基础环境已经安装完成。