这是 Go 语言学习记录系列的笔记2,快来跟我一起学习Go 的基础语法吧 Go神! 启动!
基本类型
在 Go语言中,变量基本类型与 CPP 基本相同,但是多了 int 后加位数
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名
// 表示一个 Unicode 码点
float32 float64
complex64 complex128
本例展示了几种类型的变量。 同导入语句一样,变量声明也可以“分组”成一个语法块。
int, uint 和 uintptr 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽;int 是整数类型,uint 和 uintptr 是无符号整数
零值
没有明确初始值的变量声明会被赋予它们的 零值。 而零值对于不同类型的变量是不同的:
- 数值类型为
0, - 布尔类型为
false, - 字符串为
""(空字符串)
类型转换
表达式 T(v) 将值 v 转换为类型 T。
可以使用 var,也可以使用:=
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
i := 42
f := float64(i)
u := uint(f)
与 CPP 不同的是,Go 在不同类型的项之间赋值时需要显式转换,即类型加括号()
类型推导
在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。类似 cpp 的 auto,当右值声明了类型时,新变量的类型与其相同:
var i int
j := i // j 也是一个 int
不过当右边包含未指明类型的数值常量时,新变量的类型就可能是 int, float64 或 complex128 了,这取决于常量的精度:
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
常量
常量的声明与变量类似,与 CPP 完全相同,使用 const 关键字,放在最前面
常量可以是字符、字符串、布尔值或数值
但是常量不能用 := 语法声明
数值常量
数值常量是高精度的 值。 一个未指定类型的常量由上下文来决定其类型 float 浮点数比 Int 定点数表示范围更大,但 int 表示精度更高
循环
Go 只有一种循环结构:for 循环。这里不同于 CPP、Java 等
基本的 for 循环由三部分组成,它们用分号隔开:
- 初始化语句:在第一次迭代前执行
- 条件表达式:在每次迭代前求值
- 后置语句:在每次迭代的结尾执行
初始化语句通常为一句短变量声明,该变量声明仅在
for语句的作用域中可见。 一旦条件表达式的布尔值为false,循环迭代就会终止。 注意:和 C、Java、JavaScript 之类的语言不同,Go 的 for 语句后面的三个构成部分外没有小括号, 大括号{ }则是必须的。