这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
本堂课重点内容
-
Go语言学习背景
-
Go语言基础,包括
- 开发环境搭建
- 基础语法介绍
- 标准库介绍
-
Go语言实战,包括三个小项目
- 猜谜游戏
- 命令行词典
- SOCK5代理
学习背景
Golang相较于其他语言有其优势:
-
部署简单:
- Golang可以直接编译成机器码运行,跨平台兼容性强
- 同时不依赖其他库运行
-
静态类型:
Golang属于静态类型语言,在编译的时候即可检查出隐藏的大多数问题
-
标准库强大:
- 高效的垃圾回收机制
- 具有丰富的标准库
-
并发支持:
Golang在语言层面支持并发,可以充分发挥多核机器的性能
-
go build ./test.go编译go run ./test.go直接运行
语言基础
-
在学习每一门语言的时候都会介绍的Hello World程序:
package main import "fmt" func main() { fmt.Println("Hello World") } -
以上面的程序为例,说几个细节
-
golang中的表达式,结尾可以加
;,但一般都不加 -
函数体的左花括号
{要和函数名在同一行,否则会报错 -
上面程序的第一行是为我们程序定义的包名
package main -
import "fmt"导入了fmt包补充其余的导包方式
-
import "./main"导入同一目录下的main包
-
import t "time"导入time包,并使用别名t
-
import . "time"导入time包中的所有内容,这样就可以直接使用time包的内容,不用再加
time. -
import _ "time"⽆法使⽤该包的函数,但是会执行该包的
init函数
-
-
-
变量的声明
以int类型的声明为例
-
var a int注意变量名在变量类型前面,这种方式下默认值为0
-
var b int = 1声明后初始化为1
-
var c = 2省略数据类型,根据值来推导数据类型为int
(golang中int占据空间:32位机器占4个Byte,64位机器占8个Byte,我们一般用int32和int64)
-
d := "test"省去类型关键字和var关键字
这种方法不适用于全局变量的声明,前三种全局变量和局部变量均可使用
将
var换为const即可声明常量 -
-
逻辑语句
-
if-else
要注意的就是条件判断语句不需要加括号
同时if-else后强制使用花括号
-
循环
golang中没有while循环和do-while循环,只有for循环
for循环后可以带C style的三个表达式中的任意几段
同样也支持
break和continue -
switch
golang中switch一个分支的结束不需要加break
golang中switch判断的变量可以是任意类型
-
-
数组(用的比较少)
声明方式
var myArray [3]intmyArray := [3]int{1,2,3} -
切片slice
也被称为动态数组,声明方式:
myArray := []int{1,2,3,4}myArray := make([]int, 4),长度为4个int的切片使用
append()来添加新的元素,append()会返回得到的新切片,要将返回值赋给原切片myArray = append(myArray, 66) -
map
声明:
-
var myMap map[string]int声明了一个key的类型是string,value的类型是int的map
-
在声明的同时赋值
myMap := map[string]int{ "one": 1, "two": 2, "three": 3, } -
myMap := make(map[string]int,5)声明的同时直接开辟空间
在使用map前,若未分配空间,则要使用make给map分配空间
myMap = make(map[string]int,5)赋值:
myMap["a"]=1myMap["b"]=2 -
-
Golang中的面向对象特性见后续笔记
参考
- 字节内部课—Go 语言基础 - 基础语法
- Go 语言教程