GO语言基础
相较来说,GO语言是一门十分基础的编程语言,在有过一定的C语言和Python基础后,可以比较轻松的上手,以下就是一个基础的hello world的实现
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
作为一个没有接触过GO语言的新手来说,从字节内部课中,我学会了很多知识,比如第一行一开始的包声明。main包是Go程序的入口点。每个可执行的Go程序都必须有一个main包。而在C语言中并没有这类要求。
另外是fmt,我认为有点类似于C语言中的#include<stdio.h>。
在听了王克纯老师的课后,我能够理解GO语言的基本语法,我拿它们与C语言相比,发现GO语言在一定程度上比C语言更加简洁明了,for循环不需要用()把条件框起来,每一行不需要在行末打一个;,switch函数中也不需要严格输入一个变量,而是可以更便捷的在case后面输入任意的变量类型比如字符串等等。
实战案例
1简单的猜数字小游戏
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
// fmt.Println("The secret number is ", secretNumber)
fmt.Println("Please input your guess")
reader := bufio.NewReader(os.Stdin)
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
continue
}
input = strings.Trim(input, "\r\n")
guess, err := strconv.Atoi(input)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
fmt.Println("You guess is", guess)
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
}
}
}
这个程序十分的基础,我在C语言中也写过,不过王克纯老师给出了一个新的方式,利用bufio包创建一个bufio.Reader来从标准输入读取数据,然后再删除了\n换行,减少了系统调用的次数,虽然代码比较复杂,但是对我这个新手来说提供了一个思路。
2在线字典
王克纯老师很详细的从在网站上抓包开始发送API,接收API等等慢慢为我们讲解了如何用GO语言写一个在线的字典来提供英文单词的翻译。紧随其后,他还为我们讲解了如何完善代码,在main函数中检查命令行参数的个数,确保用户输入了一个单词。
- 如果参数个数不正确,打印使用说明并退出。
- 调用
query函数查询用户输入的单词。
有所感悟
作为一名大一新生,通过老师的宣传,我了解到了字节跳动青训营并选择了报名参加,之前,我并没有接触过GO语言,只是对C语言与python有一定的基础,我希望无论是否能成功结营,都能够在11月内有所收获,努力学习GO语言!