第三章 GO语言结构
结构
-
package main // 声明一个 main 包 import "fmt" // 导入 fmt 包,打印字符串使用 func main() { // 声明 main 主函数 fmt.Println("Hello World!") // 打印 Hello World! } // 单行注释 /* 多行注释/块注释 */
执行
- 在终端中执行go run hello.go 即可运行代码
- 或者执行go build ,则会生成一个可执行的二进制代码文件(.exe文件),这是编译后的文件,执行 ./编译后的文件即可
备注
- go语言的花括号不能单独放在一行,必须放在一个函数或者其他语句后面,否则会有编译错误
- 一行代码表示一句,不需要末尾加分号
fmt.Println()
不能放在函数体外面- 函数体外可以声明变量,但不能作赋值操作
- 如果函数体中作了赋值却没有用到,也会出现编译错误
格式化
- go文件中缩进使用tab或者空格或者混用都行,只要在终端中输入
go fmt hello.go
即可自动帮你格式化- 一般保存时软件会自动执行格式化语句,不需每次都执行
第四章 Go语言之变量和常量
变量
变量的声明
-
标准格式声明
-
var 变量名 变量类型 //如: var name string var age int var isOk bool
-
-
批量声明
-
var ( a string b int c bool )
-
变量的初始化
-
标准格式
-
var 变量名 类型 = 表达式 // 如: var name string = "Hello" var age int = 18 // 一次初始化多个变量 var name,age = "Hello",18
-
-
类型推导
-
解释器根据我们的赋值自动推导出变量的类型
-
var name = "Q1mi" var age = 18
-
-
短变量声明
-
在函数体内部使用
:=
声明局部变量并初始化(只能用在函数体内) -
package main import ( "fmt" ) // 全局变量m var m = 100 func main() { n := 10 m := 200 // 此处声明局部变量m fmt.Println(m, n) }
-
-
匿名变量
-
使用 _ 来声明一个匿名变量
-
func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x) fmt.Println("y=", y) } // _ 接收其他不需要的返回值
-
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
-
常量
常量的声明
-
标准声明
-
const pi = 3.1415 const e = 2.7182
-
-
批量声明
-
const ( pi = 3.1415 e = 2.7182 )
-
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同
-
const ( n1 = 100 n2 n3 = 200 n4 ) >>> 100 100 200 200
-
-
iota
-
iota
是go语言的常量计数器,只能在常量的表达式中使用 -
iota
在const关键字出现时将被重置为0;const中每新增一行(不是每声明一个变量)常量声明将使iota
计数一次-
const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 )
-
-
使用
_
跳过某些值-
const ( n1 = iota //0 n2 //1 _ n4 //3 )
-
-
iota
声明中间插队-
const ( n1 = iota //0 n2 = 100 //100 n3 = iota //2 n4 //3 ) const n5 = iota //0
-
-
定义数量级
-
const ( _ = iota KB = 1 << (10 * iota) // 1 << 10 MB = 1 << (10 * iota) // 1 << 20 GB = 1 << (10 * iota) // 1 << 30 TB = 1 << (10 * iota) // 1 << 40 PB = 1 << (10 * iota) // 1 << 50 )
-
<<
表示左移操作,1<<10
表示将1的二进制表示向左移10位,也就是由1
变成了10000000000
,也就是十进制的1024
-
-
多个
iota
定义在一行-
const ( a, b = iota + 1, iota + 2 //1,2 c, d //2,3 e, f //3,4 ) // 相当于 const ( a, b = iota + 1, iota + 2 //1,2 c, d = iota + 1, iota + 2 //2,3 e, f = iota + 1, iota + 2 //3,4 )
-