这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
这篇文章主要是对第一次课程的总结。 首先,GO语言被称为21世纪的C语言,之所以这么说是由原因的:天生针对高并发,语法简单、学习曲线平缓,丰富的标准库,完善的工具链,静态编译、快速编译,且有较为优秀的GC。由于这些优点的存在,字节全面拥抱了GO语言,字节可以说是目前国内使用GO最早最多的一批公司。
由于我之前接触过一些GO,故安装过程不再赘述。
前期讲述了一些基础的语法规则,如变量的声明,if-else,for等条件语句,以及map,range,channel等三个重要的变量。
重点是后面的例题,此处详细解释第一个吧,后面的比较复杂。 第一个题目是猜字谜游戏,使用math/rand包中的Intn函数生成一个随机数,用户每次输入一个数据时会提示大了或者小了,知道用户猜对或者退出。 产生随机出的程序如下: package main import ( "fmt" "math/rand" ) func main() { maxNum := 100 secretNumber := rand.Intn(maxNum) fmt.Println("The secret number is ", secretNumber) }
但是,这样处理会存在一个问题:每次产生的随机出都是一样的,如果这样,这就不是一个随机数了。所以,我们需要利用当前的时间来初始化当前的种子,这样随机数就会比变化了。 在下面的程序中,我们使用了一个Reader变量来进行一个流的操作。 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('\r')
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
continue
}
input = strings.TrimSuffix(input, "\r")
input = strings.TrimPrefix(input, "\n")
guess, err := strconv.Atoi(input)
if err != nil {
fmt.Println(err)
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
}
}
}
标题:📖 青训营第三期 | 笔记创作活动-青训营社区