###第一章 课程介绍 1-1
之前看了无闻的go语言教程,主意是侧重于讲语法,很多地方不是特别清楚。后来准备找到了这个资源——7天用Go从零实现Web框架Gee教程,准备实践一下,但是写到第三天的时候,发现有很多知识需要补充。于是又找到目前这个课程。
视频发布的作者是google的工程师,讲解的非常到位。第一章主要介绍了课程大纲:
- 基本语法:变量,选择,循环,指针,数组,容器。
- 面向接口:结构体,duck typing的概念,组合的思想。
- 函数式编程:闭包的概念,多样的例题。
- 工程化:资源管理,错误处理,测试和文档,性能调优
- 并发编程:goroutine和channel,理解调度器,多样的例题
- 实战项目:从0开始,自主搭建分布式爬虫。
###第二章
2-1 go语言的变量名,名称写在前面,类型写在后面。why?先想到名字,后想到类型,同时对与混合类型有帮助。 函数外面声明变量必须用var关键字,变量只有包内的变量。可以用这种格式声明
var (
aa = true
bb = "kkkkk"
)
2-2 内建变量类型
- bool string
- (u)int (u)int8 (u)int16 (u)int32 (u)int64 (u)intptr
- byte rune
- float32, float64, complex32, complex64
2-3 枚举类型
go 没有枚举的关键字,一般都是用 const来定义
const (
cpp
java
python
javascript
)
iota的用法,从0开始递增,可以使用公式。比如说
const(
B = 1 << (10 * iota)
KB
MB
GB
TB
)
fmt.Println(B, KB, MB, GB, TB)
2-4 条件语句
if判断,支持条件内判断。注意变量的生效区间。
const filename = "abc.txt"
if content, err := ioutil.ReadFile(filename); err != nil{
fmt.Println(err)
}else{
fmt.Printf("%s", content)
}
switch 语句,case下默认是有break的,除非使用fallthrough。
func eval(a, b int, op string) int{
var result int
switch op{
case "+": result = a+b
case "-": result = a-b
case "*": result = a*b
case "/": result = a/b
default:
panic("unsuport operator:" + op)
}
return result
}
panic中断执行
2-5循环