这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
一、本堂课重点内容:
- 1.GO语言背景介绍
- 2.字节选择GO语言的的原因
- 3.GO语言变量类型
- 4.GO语言基础语法
二、详细知识点介绍
1.GO语言背景介绍
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
2.字节选择GO语言的原因
- 最初使用的Python,由于性能问题换成了Go
- C++不太适合在线Web业务
- 早期团队非Java背景
- 性能比较好
- 部暑简单、学习成本低
- 内部RPC和HTTP框架的推广
3.GO语言变量类型
常见的变量包括字符串,整数,浮点型和bool型等。
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))
}
4.GO语言基础语法
GO语言的if与else
GO语言的if与else和C++中大抵相同,但是GO语言的if与else的判断条件是不会有括号的 如:
if 8 % 4 == 0 {
fmt.Println("yes")
}
GO中的循环
在GO中没有while循环dowhile循环,只有for循环,for循环除了没有括号以外和变量赋值不同,其他写法和C++大抵相同,比如说:
for i := 1; i < 10; i ++ {
fmt.Println("yes")
}
也可以什么判断条件都不写就是死循环:
for {
fmt.Println("yes")
}
也可以相当于C++中的while:
for i < 10 {
fmt.Println("yes")
i ++
}
GO中的switch
GO的switch比较重要的特点就是不像C++,GO的switch不用加break可以自行跳出,而不会一直往下执行。
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4, 5:
fmt.Println("four or five")
default:
fmt.Println("other")
}
切片
GO语法中数组并不如切片好用切片可以进行扩容等操作。
map(哈希)
可以修改map和删除map的值。
三、实践练习例子
猜谜游戏,生成随机数
需要自行根据运行时间生成随机数种子来生成随机数不然生成的随机数都将会是同一个数。
func main() {
maxNum := 100
// 随机数种子
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
}
四、个人总结
GO语言的历史包袱非常轻,有着非常优秀的源码库和设计风格,让我产生了浓厚的兴趣,增强了我一定要好好学GO语言的信心。