在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
格式化
让所有人都遵循一样的编码风格是一种理想,现在Go语言通过
gofmt程序 ,让机器来处理大部分的格式化问题。gofmt程序 是go标准库提供的一段程序,可以尝试运行它,它会按照标准风格缩进,对齐,保留注释,它默认使用制表符进行缩进。Go标准库的所有代码都经过gofmt程序 格式化的。
注释
Go注释支持C风格的块注释
/* */ 和C++风格的行注释// 。块注释主要用作包的注释。Go官方提倡每个包都应包含一段包注释,即放置在包子句前的一个块注释。对于有多个文件的包,包注释只需要出现在其中一个文件即可。
godoc 既是一个程序,又是一个 Web 服务器,它对 Go 的源码进行处理,并提取包中的文档内容。 出现在顶级声明之前,且与该声明之间没有空行的注释,将与该声明一起被提取出来,作为该条目的说明文档。
命名
分号
初始化
常量必须在定义的时候就进行初始化。常量只能是数字、字符、字符串、布尔值等基本类型,定义它们的表达式必须是在编译期就可以求值的类型。使用
const 来定义一个常量:
在Go中,
枚举常量 使用iota 来创建,iota 是一个自增长的值:
iota 总是用于increment,但它也可以用于表达式,在《effective Go》展示了一个定义数量级的表示:
源文件可以定义
无参数init函数 ,该函数在真正执行函数逻辑之前被自动调用,下面的程序简单说明这一点:
可以看到,在执行main函数中的逻辑前,init函数会先被调用,而且同一个源文件中可以定义多个init函数。init函数通常被用在程序真正执行之前对变量、程序状态进行校验。它的执行机制是这样的:
控制结构
Go使用更加通用的for来代替do与while循环,for的三种形式为:
对于数组、切片、字符串、map,或者从信道读取消息,可以使用
range子句 :
Go的switch要更加灵活通用,当
switch 后面没有表达式的时候,它将匹配ture ,这也意味着if-else-if-else 链可以使用switch 来实现:
函数
Go的函数可以进行多值返回。在C语言中经常有这种笨拙的用法:函数通过返回值来告知函数的执行情况,例如返回0代表无异常,返回-1表示
EOF 等,而通过指针实参来传递数据给外部。现在使用Go函数的多值返回可以解决解决这个问题。下面是Go标准库中打开文件的File.Write 的签名:
Write 函数返回写入的字节数以及一个错误。如果正确写入了,则err 为nil ,否则,err 为一个非nil 的error 错误值,这在Go中是一种常见的编码风格。
Go函数的返回值可以被命名。Go的返回值在函数体内可以作为常规的变量来使用,称为
结果“形参” ,结果“形参” 在函数开始执行时被初始化与其类型相应的零值。如果函数执行了不带参数的return ,则把结果形参的当前值返回:
这样做的好处是函数的签名即为文档,返回值的含义也写到了函数签名中,提高了代码的可读性。
Go提供defer语句用于延迟执行函数。defer语句修饰的函数,在外层函数结束之前被调用。可以这样来使用
defer语句 :
关于
defer语句 :
使用 defer语句
|
请发表评论