GO语言项目实战案例(1) | 青训营笔记

93 阅读3分钟

`

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	maxNum := 100
	secretNumber := rand.Intn(maxNum)
	fmt.Println("The secret number is ", secretNumber)
}

import "math/rand" 导入了 math/rand 包,该包提供了生成随机数的函数。 fmt.Println("The secret number is ", secretNumber) 打印出生成的随机数。

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	maxNum := 100
	rand.Seed(time.Now().UnixNano())
	secretNumber := rand.Intn(maxNum)
	fmt.Println("The secret number is ", secretNumber)
}

rand.Seed(time.Now().UnixNano()) 设置随机数种子。rand.Seed() 函数接受一个整数作为种子,并根据种子生成伪随机数序列。在这里,我们使用当前时间的纳秒部分作为种子,以确保每次运行程序时都会生成不同的随机数序列。 这段代码的作用与前一个例子相同,它生成一个介于 0 和 100 之间的随机数,并将其打印到控制台。与前一个例子不同的是,它使用了当前时间作为随机数种子,以确保每次运行程序时都会生成不同的随机数序列。这样做可以增加随机性,并避免在多次运行程序时生成相同的随机数。

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)
	input, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println("An error occured while reading input. Please try again", err)
		return
	}
	input = strings.Trim(input, "\r\n")

	guess, err := strconv.Atoi(input)
	if err != nil {
		fmt.Println("Invalid input. Please enter an integer value")
		return
	}
	fmt.Println("You guess is", guess)
}

import "bufio" 导入了 bufio 包,该包提供了缓冲读取功能。import "fmt" 导入了 fmt 包,该包提供了与输入和输出相关的函数。import "math/rand" 导入了 math/rand 包,该包提供了生成随机数的函数。import "os" 导入了 os 包,该包提供了操作系统功能。import "strconv" 导入了 strconv 包,该包提供了字符串与基本数据类型之间的转换函数。import "strings" 导入了 strings 包,该包提供了字符串操作函数。 reader := bufio.NewReader(os.Stdin) 创建一个用于读取用户输入的 bufio.Reader 对象。 input, err := reader.ReadString('\n') 从标准输入读取用户输入的内容,直到遇到换行符('\n')。读取的内容存储在 input 变量中,并通过 err 检查是否发生了错误。 input = strings.Trim(input, "\r\n") 去除输入字符串中的换行符('\r' 和 '\n'),使用 strings 包的 Trim 函数进行处理。 guess, err := strconv.Atoi(input) 将输入字符串转换为整数,并将结果存储在 guess 变量中。如果转换过程中出现错误,err 将被设置为非空值。 fmt.Println("You guess is", guess) 打印用户猜测的数字。

这段代码的作用是生成一个介于 0 和 100 之间的随机数,并要求用户输入猜测的数字。程序将读取用户的输入,并将其转换为整数类型。最后,程序将打印出用户猜测的数字。

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)
	input, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println("An error occured while reading input. Please try again", err)
		return
	}
	input = strings.Trim(input, "\r\n")

	guess, err := strconv.Atoi(input)
	if err != nil {
		fmt.Println("Invalid input. Please enter an integer value")
		return
	}
	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!")
	}
}

guess, err := strconv.Atoi(input) 将输入字符串转换为整数,并将结果存储在 guess 变量中。 fmt.Println("You guess is", guess) 打印用户猜测的数字。 if guess > secretNumber { ... } else if guess < secretNumber { ... } else { ... } 根据用户的猜测结果进行比较和输出。

  • 如果用户猜测的数字大于 secretNumber,则打印提示信息 "Your guess is bigger than the secret number. Please try again"。
  • 如果用户猜测的数字小于 secretNumber,则打印提示信息 "Your guess is smaller than the secret number. Please try again"。
  • 如果用户猜测的数字等于 secretNumber,则打印提示信息 "Correct, you Legend!",表示猜测正确。

这段代码的作用是生成一个介于 0 和 100 之间的随机数,并要求用户输入猜测的数字。程序将读取用户的输入,并将其转换为整数类型。然后,程序将比较用户的猜测结果与生成的随机数,并根据比较结果输出相应的提示信息。如果猜测正确,则输出 "Correct, you Legend!"。如果猜测不正确,则输出提示信息指示用户继续尝试。

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
		}
	}
}

for循环可以让人进行多次猜测。