1.1 什么是Go语言 1.高性能、高并发 2.语法简单、学习曲线平缓 3.丰富的标准库 4.完善的工具链 5.静态链接 6.快速编译 7.跨平台 8.垃圾回收
1.2 哪些公司在使用Go语言 字节跳动 google 腾讯 facebook 等
1.3 字节跳动为什么全面拥抱Go语言 1.由于性能问题换成了Go 2.c++不太适合在线Web业务 3.早期团队非java背景 4.性能比较好,部署简单、学习成本低 5.内部RPC和HTTP框架的推广
02 入门
2.1 开发环境--安装Golang 、配置集成开发环境(vs code)
2.2 基础语法--Hello World package main //程序入口包 import { “fmt” //导入了标准库 可以屏幕上输出输入格式化字符串等 } func main() { fmt.Println( “hello world”) }
---变量
1.变量声明 var a = “initial” //Go 会自动推导变量类型 也可以 var b,c int = 1,2 //自己定义变量类型 f:= float32(e) //另一种声明变量方式 const s string = “constant” //常量声明方式,且Go会根据使用的上下文自动确定类型
---if else 写法和c语言很类似,第一个不同点是没有括号 if 7%2 == 0 { fmt.Println( “7 is even”) } 第二个不同点是 if后面要直接加大括号,不能像c一样把if里面的语句写在同一行 即Go语言规定:与 if 匹配的左括号 { 必须与if和表达式放在同一行,如果尝试将“{”放在其他位置,将会触发编译错误。
同理,与else匹配的“{”也必须与else在同一行,else也必须与上一个if或else if的右边的大括号在一行。
----循环 GO里面只有一个for循环 -----switch 1.case语句中不用加break语句,跑完case中的一条分支后,不会去跑其他的分支。 2.相比c语言,Go中的 ease语句可以使用任意的变量类型,比如字符串,结构体,甚至可以取代任意的 if else 语句,不加任意的变量,而直接去写条件分支,更清晰易懂
--数组 var a[5] int //表示可以存入5个int元素的数组a a[4]=100 //表示写入第四个位置的值,而不是第五个
--切片(可变长度的数组) s:= make([]string,3) //用make表示切片 s = append(s,"d") //用append追加元素 make( []Type, size, cap ) // 其中 Type 是指切片的元素类型 // size 指的是为这个类型分配多少个元素 // cap 为预分配的元素数量,这个值设定后不影响 size,只是能提前分配空间,降低多次分配空间造成的性能问题 a := make([]int, 2) b := make([]int, 2, 10)
fmt.Println(a, b) fmt.Println(len(a), len(b)) 代码输出如下: [0 0] [0 0] 2 2
2.切片操作 如 fmt.Println(s[2:5]) //即依次取出s数组中的第二个到第4个元素
由于是go语言的小白,感觉老师讲的基础语法很好,但是太快了,建议仔细去阅读go的语法文档。 ---map ---range ---函数 ----指针 ----结构体 ----结构体方法(类似类的成员函数) ----错误处理 ---字符串操作 ----字符串格式化 ----JSON处理