Go语言入门指南2|青训营

58 阅读3分钟

这是 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

本例展示了几种类型的变量。 同导入语句一样,变量声明也可以“分组”成一个语法块。

intuint 和 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

不过当右边包含未指明类型的数值常量时,新变量的类型就可能是 intfloat64 或 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 语句后面的三个构成部分外没有小括号, 大括号 { } 则是必须的。