前言
Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。
go是非常年轻的一门语言,它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”
Go最不方便的在于早期版本没有泛型,但是从1.18起也加入了泛型。
go适合做什么
- 服务端开发
- 分布式系统,微服务
- 网络编程
- 区块链开发
- 内存KV数据库,例如boltDB、levelDB
- 云平台
安装GO环境
下载地址:https://studygolang.com/dl
推荐安装:go1.18.7.windows-amd64.msi
因为从1.18起才支持的泛型。
安装后查看
1 | go version |
成功显示
go version go1.18.7 windows/amd64
设置环境变量GOPROXY=https://goproxy.cn
编程规范
- 编程规范好,可避免语言陷阱,可有利团队协作,有利项目维护。
- 正常的Go编程规范有两种:编译器强制的(必须的),gofmt格式化非强制的(非必须)。
- Go宣告支持驼峰命名法,排斥下划线法。
- 自定义原则:
- 统一工作区间,避免目录及文件名随意
- 规范变量/结构体/方法及接口名
- 规范注释
- 单元测试/程序效率等建议
两个等级: (S)建议,(M)必须。
- (M)一个目录只包含一个包,模块复杂拆分子模块/子目录
- (M)提交代码时gofmt格式化代码,golint检查代码(使用IDE时默认这两个工具会自动用到)
- (S)json字符串建议使用反单引号
- (M)文件名必须小写,允许下划线
_
,但头尾不能。避免与_test.go或者系统相关_386.go等冲突 - (S)文件名以功能为指引,不需要再出现模块名
- (M)目录名必须小写,允许中划线
-
,但头尾不能 不建议目录名出现下划线_
- (M)包名必须全部小写,无下划线,越短越好,尽量不要与标准库重名,禁止通过中划线连接多个单词
- (S)包名尽量与目录名一致
- (M)函数名和结构体名必须为(驼峰命名法),最好不带特殊字符如划线等
- (S)函数名建议动词或者动宾结构单词,结构体建议名词或者动名词
- (S)常量和枚举名(大驼峰命名法),不允许下划线,第三方包例外。
- (M)函数参数(小驼峰命名法),不能有下划线
- (S)函数参数按紧密程度安排位置,同类型参数应该相邻
- (S)参数不大于5个
- (M)变量名不允许下划线,局部变量(小驼峰命名法),全局变量(大驼峰命名法)
- (S)避免全局变量多使用,for循环可用单字母
- (M)接口名(大驼峰命名法),不能下划线,名词
- (M)复杂功能请多写注释备注,注释表达需清晰,不要啰嗦。注释标准暂时不强制,最好参考godoc,如包注释使用
/**/
,(大驼峰命名法),注释后空一行,函数注释写在函数上方等。 - (S)建议少使用main方法测试,而是使用
_test.go
做测试
总而言之
文件名和目录名,包名都必须小写。
公有方法名、枚举名、接口名、常量、全局变量使用
大驼峰命名法
。私有方法名、局部变量和方法的参数使用
小驼峰命名法
。
提示
Go语言中根据首字母的大小写来确定可以访问的权限。
无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用
可以简单的理解成:首字母大写是公有的,首字母小写是私有的
IDEA中格式化
新版本IDEA已经自带Actions on Save,可以忽略下面的设置。
安装 File Watchers
插件和Save Actions
插件
设置 Tools
=>File Watchers
点击添加
弹出的窗口按下图配置
其中
Program
选择go安装目录下的gofmt
Argnuments
输入 -w $FilePath$
取消自动保存,否则会一更改就触发格式化。
注意
页面修改保存时才会格式化,如果没有格式化,重启IDEA即可。
要在保存的时候触发格式化