Let's Go 6 — 错误处理

延迟调用关键字defer在上一章中,代码里出现了defer关键字defer特性:关键字defer用于注册延迟调用。这些调用直到return前才被执行。因此,可以用来做资源清理。多个defer语句,按先进后出的方式执行。defer语句中的变量,在defer声明时就决定了。defer用途:关闭文件句柄锁


Let's Go 5 — 函数

函数定义一个函数不支持嵌套(nested)、重载(overload)和默认参数(defaultparameter)。无需声明原型。(与C不同)支持不定长变参。(参数列表可不定长)支持多返回值。支持命名返回参数。支持匿名函数和闭包。使用关键字func定义函数,左大括号依旧不能另起一行。functest


Let's Go 3 — 指针与自定义类型

指针和c一样,也有指针(用*表示),但是进行了一定的简化支持指针类型*T,指针的指针**T,以及包含包名前缀的*<package>.T。默认值nil,没有NULL常量。操作符"&"取变量地址,"*"透过指针访问目标对象。(跟C一样)不支持指


Let's Go 2 — 类型与字符串

类型类型总览分类类型长度默认值说明布尔型bool1falsetrue / false整型byte10是 uint8 的别名,两者完全等价 rune40是 int32 的别名,两者完全等价 int, uint4 或 8032位系统中是4字节,在64位系统中是8字节 int8, uint810-128


Let's Go 1 — 变量与常量

变量命名规范通常采用驼峰式命名,当遇到特有名词(缩写或简称,如DNS)的时候,特有名词根据是否私有全部大写或小写。形如:apiClient、URLString注意这里的api(全小写)和URL(全大写)全局变量的声明与赋值packagemainimport"fmt"//指定类型的


Let's Go 0 — 项目创建、命名规范和包导入导出

在HelloWorld之前所有的 Go 代码都是以包的形式组织起来的。Go 中的包就是目录或文件夹里面包括一个或者多个以 .go 结尾的文件。所有的 Go 代码都是放在包里的,且只能是通过包来进行访问。程序从 main 包开始运行。一个Hello world示例:package mainimport