这是我参与「第五届青训营」伴学笔记创作活动的第 1 天,今天学习的是Go语言入门以及基础语法,并利用语法进行了简单的实战案例
Go语言的特点
高性能、高并发
语法较为简单
丰富的标准库
完整的工具链
静态链接
快速编译
跨平台
垃圾回收
部署简单,开发成本低
Go的基本语法中略显特别的点
变量声明
对于类型确定的变量,变量声明时,其类型是写在变量名后面的,这与其他语言不太一样
var x int
var y int = 5
const s string = "Golang"
if-else
Go语言的结构通过大括号进行分隔,对于if-else的判断,else语句需要紧跟在其if语句的右括号后边,与其处于同一行中
if ** {
****
} else if *** {
****
} else {
****
}
switch
在其他语言的switch中,case语句是默认贯穿的,而在Go语言中并不是这样,相当于每个case后面自带break语句。如果需要对当前case与下一个case进行贯穿,则需要写上fallthrough语句将case进行贯穿
实战案例
猜谜游戏
猜谜游戏的实现相对比较简单的
最开始需要生成一个随机数,而为了随机数每次生成的数都不相同,需要对随机数的种子进行设置,最好的方法是将时间作为种子。rand.seed()的类型为int64,因此需要对时间进行处理,利用.Unix()函数将时间设置为秒数
rand.Seed(time.Now().UnixNano())
x := rand.Intn(100)
对于每次的读入,我们也需要用简单的err错误打印,对输入的内容进行判断
ip, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occur while reading input, please try again")
continue
}
在实现程序后,我们可以用提到的scanf对代码进行相应简化
t, err := fmt.Scanf("%d ", &guess)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
在线词典
在线词典是对Go语言第三方api的调用,通过发送http请求,这个可以通过“net/http”包中http相关的函数即可实现。对于请求的生成,需要对curl进行代码生成。在实现请求序列化后,我们要将json转化成结构体,并对结构体进行反序列化,最后输出即可。
SOCKS5代理
还没进行深入学习,不太懂,先不写了