# Go 编程的约定
> C 语言的时候,无论你按照怎么样的代码风格书写,都是可以正常编译的,但在 Go 编程中就需要注意一些约定。
## 1 代码风格及代码格式化
GO 不要求你在写代码的刻意美化对齐代码,或者定义一个 80 线(每行不超过 80 个字符),因为 GO 有 gofmt 工具。所有的 GO 代码都经过 gofmt 格式化为统一的风格。
其他的一些约定:
- 使用 tab 制表符进行缩进(有点难以理解,因为不同的编辑器 tab 的长度不一定一样)
- `{` 不能单独放一行
- 更少的括号使用(使用空格来断定操作符优先级 [想哭])
示例:
```
x<<8 + y<<16
```
- 使用 `//` 或 `/* ... */` 进行注释
除了行注释、块注释外,还有 **包注释**。包注释是放在一个包中任意一个 go 文件的 go 语句前的一个注释块。包注释是为了使用 godoc 工具导出包使用说明文档。
- 其它
## 2 标识符
当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。
- 首字母大写的标识符可以被外部包的代码导入后使用(类似于 C 的全局函数一样);
- 首字母小写的标识符只能在整个包的内部使用(类似于 C 的静态函数)
标识符包括常量、变量、类型、函数名、结构字段等等。。。
## 3 命名规范
- 包命名规范
- 接口命名规范
- 驼峰命名法
## 其它
GO 规范内容挺多的,详细参考[Effective Go(GO 实效编程)](https://golang.org/doc/effective_go.html)。
---
GO 编程的规范内容比较多,快速浏览了下,也没有看完,还需要通过后续的编程来消化吸收,然后再回过头来学习。
---
有疑问加站长微信联系(非本文作者)