上一节,我们了解Go语言特性以及第一个Go语言程序——Hello World,这一节就让我们更深入的了解一下Go语言的**基础语法**吧!
一、行分隔符
在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
建议不要将多个语句写在同一行,如果同一行有多个语句也需要用分号 ; 区分。
二、关键字
程序一般由关键字、常量、变量、运算符、类型和函数组成。
格式化输出:
三、命名
Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:Go 语言变量名由字母、数字、下划线 组成,其中首个字符不能为数字。大写字母和小写字母是不同的。
四、声明
1.Go语言主要有四种类型
的声明语句:
- var 变量
- const 常量
- type 类型
- func 函数实体对象的声明
2.声明顺序
一个Go语言编写的程序对应一个或多个以 .go 为文件后缀名的源文件中。每个源文件以包的声明语句开始,说明该源文件是属于哪个包。包声明语句之后是 import 语句导入依赖的其它包。然后是包一级的 类型、变量、常量、函数 的声明语句,包一级的各种类型的声明语句的顺序无关紧要 (译注 : 函数内部的名字则必须先声明之后才能使用) 。
五、变量
声明变量的一般形式是使用 var 关键字:
(一)、var 可以创建一个特定类型的变量,然后给变量附加一个名字,并且设置变量的初始值。变量声明的一般语法如下:
var 变量名字 类型 = 表达式
其中 “类型” 或 “= 表达式” 两个部分可以省略其中的一个。
- 如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。
- 如果初始化表达式被省略,那么将用零值初始化该变量。
- 数值类型变量对应的零值是0,
- 布尔类型变量对应的零值是false,
- 字符串类型对应的零值是空字符串,
- 接口或引用类型(包括slice、map、chan和函数)变量对应的零值是nil。
- 数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值。
零值初始化机制可以确保每个声明的变量总是有一个良好定义的值,因此在Go语言中不存在 未初始化的变量。
(二)、var 也可以一次声明或初始化多个变量:
var i, j, k int // int, int, int
var b, f, s = true, 2.3, "four" // bool, float64, string
初始化表达式可以是字面量或任意的表达式。
(三)、一组变量也可以通过调用一个函数,由函数返回的多个返回值初始化:
var f, err = os.Open(name) // os.Open returns a file and an error
在包级别声明的变量会在main入口函数执行前完成初始化,局部变量将在声明语句被执行到的时候完成初始化。
(四)、简短变量声明,使用 :=
赋值操作符
在函数内部,有一种称为简短变量声明语句的形式可用于声明和初始化局部变量,变量的类型根据表达式来自动推导。
- 简短变量初始化语法:
变量名字 := 表达式
(注意:它只能被用在函数体内,而不可以用于全局变量的声明与赋值)
因此我们可以将它们简写为 a := 50 或 b := false。
a 和 b 的类型(int 和 bool)将由编译器自动推断。
- 和var形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:
i, j := 0, 1 //int int
但是这种同时声明多个变量的方式应该限制只在可以提高代码可读性的地方使用,比如 for语句循环的初始化语句部分。
- 和普通var形式的变量声明语句一样,简短变量声明语句也可以用函数的返回值来声明和初始 化变量,像下面的os.Open函数调用将返回两个值:
f, err := os.Open(name)
if err != nil {
return err
} // ...use f...
f.Close()
注意:如果在相同的代码块中,我们不可以再次对于相同名称的变量使用初始化声明,例如:a := 20 就是不被允许的,编译器会提示错误 no new variables on left side of :=,但是 a = 20 是可以的,因为这是给相同的变量赋予一个新的值。
如果你在定义变量 a 之前使用它,则会得到编译错误 undefined: a。
如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误。
六、常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量的定义格式:
const 变量名 [type] = 表达式
//你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
- 常量表达式的值在编译期计算,而不是在运行期。
- 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
- 和变量声明一样,可以批量声明多个常量。
- 常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过。
七、条件语句
条件语句需要开发者通过指定一个或多个条件,如果条件为true则执行语句1,如果条件为false则执行语句2。
八、循环语句