Golang、Goland、Go传家宝

简介:

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。


一、IDE安装

目前最主流的go语言ide推荐使用 jb系列的 Goland202x.x 版本,也可以使用vscode,或者Idea等。

1. Goland安装

飞书云盘下载链接

版本编号附件地址备注
2023.1

2. 安装GO Sdk

推荐使用goland内置下载功能安装,(可选-手动去官网下载对应版本的sdk手动安装,推荐go1.17+以上版本。下载地址:https://golang.org/dl/

2.1 点击 file - Settings ,进入ide配置界面

2.2 点击Go - GOROOT ,点击【+ 】按钮,弹出下来菜单选择 Download.. 。(如果已经手动安装了sdk,则选择local,选择对应版本目录)

2.3 选择需要下载的go sdk版本,这里如果网络不好得情况下,建议多尝试几次,推荐选择1.17+ 以上版本,如果没有找到1.17以上版本,换个网络再次刷新。

然后配置安装的位置目录。点击 OK

2.4 选择完版本后 点击 apply 或者 ok,底部出现下载并安装sdk的进度条信息。等待安装完成。
 

3. 为Goland 安装 goimprots 工具

goimports工具是Go官方提供的一种工具,它能够为我们自动格式化 Go 语言代码并对所有引入的包进行管理,包括自动增删依赖的包引用、将依赖包按字母序排序并分类。 注意: Goland2022以后的版本内嵌goimports工具,无需下载。

3.1 先下载goimprots工具包,先现在点击 file - Settings ,弹出配置界面,点击 Tools - File Watchers

3.2 点击【+】,弹出菜单点击 goimprots


3.3 可以选择手动指定目录,也可以默认目录,将goimprots工具解压至sdk - bin目录下。
 

3.4 参考上图,也可以把gofmt也添加进去。

4. 修改go代理地址

安装go sdk 1.17+后,直接在ide终端命令窗口中输入:

  go env -w GOPROXY=https://goproxy.cn,direct 

然后可以输入 go env 查看环境配置。

5. 开启golang 之旅,输出hello world !

参考: GOLAND建立HELLOWORLD项目_goland helloworld_大恒大的博客-CSDN博客

二、Golang 语言学习与进阶

golang基础wiki -- 前景 · Go语言中文文档

2.1 go 语言高级进阶

Go 反射机制与用法详解: Go 反射用法详解_go 反射详解_恋恋风辰的博客-CSDN博客

2.2 go 学习路线拓扑

go学习线路图 · Go语言中文文档


三、 Go命令,工具使用,各种干货

常见的一些命令,go自带工具使用说明,go语言的优缺点与常见陷阱

3.1 Go Mod

在 Golang1.11版本之前如果我们要自定义包的话必须把项目放在 GOPATH 目录。Go1.11版本之后无需手动配置环境变量,使用 go mod 管理项目,也不需要非得把项目放到 GOPATH

3.2 Pprof 工具

pprof 是用于可视化和分析性能分析数据的工具

   https://blog.csdn.net/skh2015java/article/details/102748222
3.2.1 pprof使用模式:
  • Report generation:报告生成
  • Interactive terminal use:交互式终端使用
  • Web interface:Web 界面
3.2.2 pprof可以做什么:
  • CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置
  • Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏
  • Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置
  • Mutex Profiling:互斥锁分析,报告互斥锁的竞争情况
3.2.3 Pprof如何开启:
import  _ "net/http/pprof"

go func() {
    http.ListenAndServe("0.0.0.0:8088", nil)
}()
  • 在浏览器输入http://ip:8088/debug/pprof可以看到

4.2 Defer

  • 多个defer出现的时候,多个defer之间按照LIFO(后进先出)的顺序执行

4.3 Go语言中不存在未初始化的变量

  • 数值变量对应的是0值
  • 布尔变量对应的是false
  • 字符串对应的零值是空字符串
  • 接口或者引用类型(包括slice,map,chan)变量对应的是nil
  • 数组或者结构体等聚合类型对应的零值是每个元素或字段对应该类型的零值。

4.4 ProtoBuf初始化时空指针问题

  • 目前使用的Go版ProtoBuf(版本号:2.6.1)所有成员、基础类型都是指针,所以在初始化时一定要注意判断空指针。

  • 请用GetXXX方法作为读方法。虽然结果和直接读该成员相同,但当该成员为空时(或者其上一级为空)能返回0值,避免服务器崩溃。

  • 写方法,只能自己初始化。尤其是嵌套结构每一层都需要初始化。

五、Go 项目学习与开源项目推荐

推荐的开源项目或者学习示例。

5.1 微服务架构相关

字节CloudWeGo : CloudWeGo · GitHub
Ego :https://github.com/gotomicro/ego
Kratos : https://github.com/go-kratos/kratos
Go-Zero :https://github.com/zeromicro/go-zero

5.2 Http服务器相关

Gin : https://github.com/gin-gonic/gin
Beego : GitHub - beego/beego: beego is an open-source, high-performance web framework for the Go programming language.

5.3 网络组件相关

Gev: https://github.com/Allenxuxu/gev
Gnet : https://github.com/panjf2000/gnet
Evio : GitHub - tidwall/evio: Fast event-loop networking for Go

5.4 游戏架构相关

GoOne: https://github.com/Iori372552686/GoOne
GoNet: https://github.com/bobohume/gonet
TarsGo : GitHub - TarsCloud/TarsGo: A high performance microservice framework in golang. A linux foundation project.

5.5 其他Go开源组件

DTM分布式事务管理器: GitHub - dtm-labs/dtm: A distributed transaction framework, supports workflow, saga, tcc, xa, 2-phase message, outbox patterns, supports many languages.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值