网站开发手机销售网站用例图,企业为什么要网站建设,多渠道营销平台与crm,网站重构方案1 命名规范
1.1 Go是一门区分大小写的语言。
命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名。 Go语言从语法层面进行了以下限定#xff1a;任何需要对外暴露的名字必须以大写字母开头#xff0c;不需要对外暴露的则应该以小写字母开头。
当命名#xff08…1 命名规范
1.1 Go是一门区分大小写的语言。
命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名。 Go语言从语法层面进行了以下限定任何需要对外暴露的名字必须以大写字母开头不需要对外暴露的则应该以小写字母开头。
当命名包括常量、变量、类型、函数名、结构字段等等以一个大写字母开头如Analysize那么使用这种形式的标识符的对象就可以被外部包的代码所使用客户端程序需要先导入这个包这被称为导出像面向对象语言中的 public 命名如果以小写字母开头则对包外是不可见的但是他们在整个包的内部是可见并且可用的像面向对象语言中的 private
而Go 语言中任何标识符变量常量函数自定义类型等都应该满足以下规律
连续的字符或数字组成。以字符或下划线开头。不能和 Go 关键字冲突。 go有如下关键字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
1.2 包名称
保持package的名字和目录保持一致尽量采取有意义的包名简短有意义尽量和标准库不要冲突。包名应该为小写单词不要使用下划线或者混合大小写。
1.3 文件命名
尽量采取有意义的文件名简短有意义应该为小写单词使用下划线分隔各个单词。
1.4 结构体命名
采用驼峰命名法首字母根据访问控制大写或者小写
struct 申明和初始化格式采用多行例如下面
type MainConfig struct {Port string json:portAddress string json:address
}1.5 常量命名
常量均需使用全部大写字母组成并使用下划线分词 const APP_URL https://www.baidu.com如果是枚举类型的常量需要先创建相应类型
type Scheme stringconst (HTTP Scheme httpHTTPS Scheme https
)1.6 变量命名
和结构体类似变量名称一般遵循驼峰法首字母根据访问控制原则大写或者小写但遇到特有名词时需要遵循以下规则
如果变量为私有且特有名词为首个单词则使用小写如 appService 若变量类型为 bool 类型则名称应以 Has, Is, Can 或 Allow 开头
var isExist bool
var hasConflict bool
var canManage bool
var allowGitHook bool2. 错误处理
错误处理的原则就是不能丢弃任何有返回err的调用不要使用 _ 丢弃必须全部处理。接收到错误要么返回err或者使用log记录下来
尽早return一旦有错误发生马上返回尽量不要使用panic除非你知道你在做什么错误描述如果是英文必须为小写不需要标点结尾采用独立的错误流进行处理
// 错误写法
if err ! nil {// error handling
} else {// normal code
}// 正确写法
if err ! nil {// error handlingreturn // or continue, etc.
}
// normal code3. 单元测试
单元测试文件名命名规范为 example_test.go 测试用例的函数名称必须以 Test 开头例如TestExample 每个重要的函数都要首先编写测试用例测试用例和正规代码一起提交方便进行回归测试 。
4. 常量
相对于变量而言常量是在程序使用过程中不会改变的数据。有些地方你需要将定义好的常量重复使用代码中你不允许它的值改变。例如 圆周率 在程序执行过程中不会改变。 常量只能在其声明的范围内使用如果在一个函数内部作用域中声明的常量与外部名称相同 则只用自己内部的常量 它将忽略外部的常量。 4.1 总结
常量数值不能修改。常量定义后可以不使用。常量定义不能使用简短定义方式。常量中使用的数据类型只能是 整型、布尔、浮点、复数类型、字符串类型。
5. iota特殊的常量
iota是常量里面的计数器初始值默认值是0可以被编译器自动修改每定义一组常量时iota逐行自增1。 因为go中没有像Java那样的枚举类型因此我们可以通过iota来实现枚举类型
const (Spring Mytype iotaSummerAutumnWinter
)