1. Go语言常用特性
- 高性能、高并发
- 语法简单、学习曲线平滑
- 丰富的标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
2. 基础语法
2.1 变量
func main() {
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "foo"
fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
fmt.Println(g) // initialapple
const s string = "constant"
const h = 500000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
这段 Go 语言程序展示了变量和常量的声明与初始化,包括字符串、整数、布尔值和浮点数的使用。程序中定义了多个变量,如字符串 a 被初始化为 "initial",整数 b 和 c 分别为 1 和 2,布尔值 d 为 true,而浮点数 e 默认为 0。通过类型推导,浮点数 f 被赋值为 0,并通过字符串连接生成了新字符串 g,结果为 "initialfoo"。常量 s、h 和 i 分别代表字符串、整数和计算结果,最后程序输出了所有变量和常量的值,并计算了 h 和 i 的正弦值,展示了 Go 语言在基本数据操作和数学计算方面的能力。
2.2 for循环
i := 1
for {
fmt.Println("loop")
break
}
for j := 7; j < 9; j++ {
fmt.Println(j)
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
这段 Go 语言代码中,首先使用一个无限循环打印 "loop",然后立即通过 break 语句退出。接下来,通过一个 for 循环打印从 7 到 8 的数字。随后,使用另一个 for 循环遍历 0 到 4 的数字,但只打印奇数,偶数则通过 continue 跳过。最后,一个 for 循环继续打印 i 的值,直到 i 大于 3,每次循环后 i 增加 1。这段代码演示了 Go 语言中循环的基本用法,包括无限循环、范围循环和条件控制。
2.3 if else
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
这段 Go 语言代码通过条件语句判断数字 7 是奇数还是偶数。if 语句检查 7 % 2 == 0,即 7 除以 2 的余数是否为 0。由于 7 是奇数,条件为 false,因此程序执行 else 部分,输出 "7 is odd",表示 7 是一个奇数。整体上,这段代码展示了如何使用 if-else 语句进行条件判断。
2.4 switch
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
这段 Go 语言代码使用 switch 语句判断当前时间是上午还是下午。通过 time.Now() 获取当前时间,并检查小时数。如果小时数小于 12,输出 "It's before noon";否则,输出 "It's after noon"。这展示了如何利用 switch 进行条件判断。
2.5 数组
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
这段 Go 语言代码定义了一个包含五个整数的数组 b,其元素为 1, 2, 3, 4, 5。接着,使用 fmt.Println(b) 输出数组 b 的内容,结果将显示整个数组的值 [1 2 3 4 5]。这段代码展示了如何创建和打印数组。
2.6 切片
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2]) // c
fmt.Println("len:", len(s)) // 3
这段 Go 语言代码首先使用 make 函数创建一个长度为 3 的字符串切片 s。接着,依次给切片的三个元素赋值为 "a"、"b" 和 "c"。然后,使用 fmt.Println 输出切片的第三个元素和长度,结果分别为 c 和 3。