青训营X豆包MarsCode 技术训练营第一集:走进 Go 语言基础 | 豆包MarsCode AI 刷题

136 阅读2分钟

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语言!