一、猜谜游戏
设置一个随机种子,用rand.Seed生成随机数,然后用reader := bufio.NewReader(os.Stdin)来创建了一个新的读取器(Reader),这个读取器会与标准输入流(os.Stdin)关联;
然后使用for循环,input, err := reader.ReadString('\n') 用来取输入数据,与生成的随机数进行比较,比较后输出相应的大小的提示,并重新输入,到输入的数与生成的随机数一致为止,可以完成一个猜谜游戏程序。
js
复制代码
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
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
}
}
二、依赖管理
Go语言的依赖管理经历了一系列演进阶段:
- 初始阶段: 最初版本的Go语言并未配备官方的依赖管理工具。开发者通常将项目所需的依赖库放置在项目目录下的
vendor文件夹中。这种方法导致每个项目都会复制一份自身所需的依赖库,带来了重复和冗余。 - 第三方工具引入: 为了应对依赖库更新、冲突解决等问题,社区陆续推出了一些第三方依赖管理工具,如Godep和glide。这些工具通过管理项目的
vendor文件夹,实现了对依赖库版本的追踪和控制。 - 官方解决方案: Go语言的官方解决方案于Go 1.11版本中引入,即Go Modules。Go Modules通过在项目根目录中添加一个
go.mod文件来管理依赖关系。在这个go.mod文件中,开发者可以明确指定所需依赖库及其版本要求。
这一演进过程从最初的手动复制依赖库,到第三方工具的涌现,再到官方的Go Modules,极大地提升了Go语言的依赖管理水平。Go Modules为依赖管理提供了一个统一且标准化的解决方案,不断得到更新和优化,为Go开发者提供了更加优质的依赖管理体验。
三、Go Module实践
Go Module 是用于管理 Go 语言项目中包依赖关系的工具。
使用 Go Module 需要满足以下两个条件:第一, Go 版本必须在1.11或之上;第二,需要将环境变量 GO111MODULE 设置为"on",这样才能启用 Go Module 的功能。
相比传统的包管理方式,Go Module 提供了更加灵活和可靠的方式来管理项目所需的包依赖。通过使用它,开发者可以更好地维护项目所依赖的包,同时也能够确保在不同的环境中构建项目时得到一致的结果。这一工具的出现使得 Go 语言的包管理变得更加现代化和方便,因此受到了广大开发者的欢迎和推崇。
四、测试
Go语言是一门强大且备受欢迎的编程语言,它支持测试驱动开发(TDD)的开发方法。在Go语言中,编写单元测试变得异常简单和直观。
Go语言内置了一个名为testing的测试框架,该框架提供了多个函数和工具,用以编写和执行测试。为了让Go编译器能够识别测试文件,你需要确保测试文件的文件名以_test.go结尾。
随后,我们只需执行测试。Go编译器会自动寻找所有以_test.go结尾的测试文件,并执行其中的测试函数。测试的结果将会显示在终端上。若所有的测试用例都通过了,你将会看到一个表示通过的消息。