后端第一节课Go语言入门 | 青训营笔记

84 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

今天是正式上课的第一天,观看了青训营老师准备的两节课程,学习了go语言的基础语法和入门实践。

Go 语言-入门

老师首先讲了Go的历史以及特性。

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

  • 与 Java 相比,Go 是一门高性能,高并发,语法简单,学习曲线平缓的强类型和静态类型语言,其拥有丰富的标准库,完善的工具链,支持快速编译,跨平台且支持垃圾回收(GC)

  • 与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。

之后课程老师从开发环境讲起,讲述了如何安装Go以及配置开发环境,然后开始讲解Go的基础语法。

从最基础的变量、if-else、循环等讲到切片、map、字符串处理等知识。

Go 语言-实战

讲解了三个实战小项目,分别是猜谜游戏、在线词典以及SOCKS5代理。

下面详细介绍一下猜谜游戏的设计与编写

思路:首先生成一个随机数,用户开始猜数,用户进行输入,我们需要读取用户的输入并实现判断逻辑:如果用户输入的数大于生成的随机数;如果用户输入的数小于生成的随机数,则输出“你猜的数比答案小”;如果猜中,则输出“恭喜您猜对了!”;最后实现游戏循环。

部分代码:

生成随机数 rand.Seed(time.Now().UnixNano())

读取输入

reader := bufio.NewReader(os.Stdin)

input, err := reader.ReadString('\n') 读取一行输入

input = strings.Trim(input, "\r\n") 去掉换行符

guess, err := strconv.Atoi(input) 将输入转换为数字

实现判断逻辑

if guess > secretNumber {
    fmt.Println("Your guess is bigger than the secret number. Please try again")
} else if guess < secretNumber {
    fmt.Println("Your guess is smaller than the secret number. Please try again")
} else {
    fmt.Println("Correct, you Legend!")
    break
}

实现游戏循环 在核心代码外加一层for循环即可

课程结束后准备继续按照Go语言路线进行学习。