这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
HelloWorld-程序基本结构
在所有语言的程序中,我们通常都会使用经典的 Hello World 来窥见这个语言的一角,在Go语言的学习中也不例外。
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
上面这个短小的程序包含了一些基本的组成元素:
- 包
package:这个程序所在的位置 - 导入
import:导入fmt包使用其中的函数 - 函数
function:函数的定义、函数的使用
一个 go 文件基本都会包含这几个部分,下面会有详细解释这个程序的章节。
变量 和 常量
变量:用于存储值便于对其的一个内存区域。对于Go语言来说,它的类型是强类型的,也就是说,一个变量只能有一个类型。
var a string = "string example" // 1
var b, c = 1, "123" // 2
d, e := true, "456" // 3
-
使用
var关键字来对一个变量进行赋值操作,这里对a变量赋值的是一个字符串,那么 a 变量就是一个字符串类型的变量 -
var关键字可以对多个变量进行赋值,同样地可以根据值的类型推断变量类型。这里和类 C 的语言不同,类C语言声明多个变量,必须是同一个类型的变量int a = 1, b = 2; int a = 1, b = 1.0; // 这样的声明方式就是错误的 -
如果觉得
var关键字比较麻烦,也同样可以使用
常量:和变量不同的是,常量是一个不可以变化的值。常量是存储在静态区,不允许修改,也不允许取值。
Note: 常量在Golang中没有确定的类型,会在上下文中自动确定类型。
const a string = "123"
const b = 10000
const c = 2E6
流程控制
if 条件控制
Golang中条件控制只需要 if 关键字即可,这里需要注意的是:
if关键字后面的条件判断不需要小括号- 在
if语句中可以声明局部变量,在局部使用
if num := 9; num < 0 {
fmt.Println("number ", num, " is negtive")
} else if num % 2 == 0 {
fmt.Println("number ", num, " is even")
} else {
fmt.Println("number ", num, " is odd")
}
switch 分支控制
switch 语句对于 if 条件判断来说是一个极大的补充。Golang中, switch 语句和其他语言也有所不同:
switch语句中的变量支持各种条件switch语句不需要break也可以在执行完分支以后跳出- 可以不写任何变量,仅仅做多重条件的判断
// switch 语句的经典用法
switch a {
case 1:
fmt.Println("number is 1")
case 2:
fmt.Println("number is 2")
case 3, 4:
fmt.Println("number is 3 or 4")
default:
fmt.Println("number isn't 1, 2, 3 or 4")
}
// 对条件分支语句的一个优化版本
num := 9
switch {
case num < 0:
fmt.Println("number ", num, " is negtive")
case num % 2 == 0:
fmt.Println("number ", num, " is even")
case num % 2 == 1:
fmt.Println("number ", num, " is odd")
default:
fmt.Println("error")
}
for 循环控制
在 Go 语言中,循环语句只有一个关键字 for 来提供,它可以支持:经典的 while 循环,经典for 循环,还支持简单的死循环。
// 简单循环
for {
fmt.Println("loop")
break
}
// 经典 for 循环类型
for i := 0; i < 100; i++ {
fmt.Println("numner i is ", i)
}
// 经典 while 循环类型
i := 1
for i < 10 {
fmt.Println("numner i is ", i)
i = i + 1
}
break 和 continue
对于循环语句来说,恰当时间的停止和跳过,也是重要的控制内容,类C语言通常使用三个关键字来完成这样特殊的控制需求:break、continue 和 goto。Go 语言则使用了 break 和 continue。
i := 1
for i < 10 {
if i == 5 {
continue
} else if i == 9 {
break
}
fmt.Println("numner i is ", i)
i = i + 1
}