数字猜谜
函数解析
rand.Seed(time.Now().UnixNano()):将当前的时间作为随机数生成器的种子,以确保每次运行程序时生成的随机数都不同。
rand.Seed()函数用于设置随机数生成器的种子。种子决定了随机数的起始点,不同的种子会产生不同的随机数序列。
time.Now().UnixNano()是一个Go语言时间包(time package)的函数调用,返回当前时间的纳秒级表示。
具体解释如下:
time.Now():返回当前时间,以time.Time类型表示。UnixNano():返回时间的纳秒级表示。它返回一个int64类型的整数,表示从UTC时间的1970年1月1日午夜(格林威治标准时间)到当前时间经过的纳秒数。
rand.Intn(n):生成一个取值范围为0到n-1的随机整数。它返回一个int类型的整数。
reader := bufio.NewReader(os.Stdin):创建一个新的bufio.Reader来读取用户的输入。
input, err := reader.ReadString('\n'):读取用户输入的字符串。从输入流中读取一行文本,直到遇到换行符为止。当读取成功时,将读取到的文本存储在 input 中。如果遇到错误,将相应的错误信息存储在 err 中。
input = strings.Trim(input, "\r\n"):移除字符串中的换行符和回车符。
guess, err := strconv.Atoi(input):将用户输入的字符串转换为整数。
思考
当看到要输入一个整数时,我想到的是下面这个样子,所以一开始看这个程序写的时候有点蒙
var num int
_, err := fmt.Scanln(&num)
golang的几种输入及其区别
-
fmt.Scanln 和 fmt.Scanf:
fmt.Scanln函数可以从标准输入中一次性读取多个以空格分隔的值,并将它们按顺序存储到变量中。fmt.Scanf函数可以根据指定的格式字符串,从标准输入中读取并解析输入值并存储到变量中。
-
bufio.NewReader 和 bufio.Scanner:
bufio.NewReader函数用于从标准输入中读取文本行或字节流。可以使用ReadString来读取一行字符串,或者使用ReadBytes或ReadSlice来读取字节流。bufio.Scanner类型的对象可以通过创建一个新的 Scanner,并使用Scan方法来逐行读取标准输入。
-
os.Stdin 和 ioutil.ReadAll:
os.Stdin是一个文件对象,可以将其用于从标准输入中读取字节流。ioutil.ReadAll函数可以从输入流中一次性读取所有字节,并将其存储到一个字节切片中。
这些方法之间的区别在于:
fmt.Scanln和fmt.Scanf需要预先知道输入值的具体数量和类型,并且只能读取以空格分隔的值。bufio.NewReader提供了更灵活的方式来读取多行文本或字节流。os.Stdin和ioutil.ReadAll提供了对输入流的更底层的访问,可以读取整个输入,不受限于行或特定格式。
选择适当的方法取决于你的具体需求。如果你只需要读取特定数量和类型的值,使用fmt.Scanln 或 fmt.Scanf 可能更简单。如果你需要处理多行文本或更灵活的输入处理,你可以选择bufio.NewReader 或其他方法。如果你需要对整个输入流进行操作或读取未知格式的输入,可以使用 os.Stdin 和 ioutil.ReadAll。
在线词典
概念学习
curl是一个命令行工具,用于通过 HTTP、HTTPS 或 FTP 协议进行数据传输。它可以在终端中向服务器发送请求,接收并显示服务器返回的响应。
浏览器开发者工具(通常称作devtools)是一种网页开发者测试和调试代码的工具,一般内置于网页浏览器或者作为浏览器的附加组件使用。不同于网站创建器或者集成开发环境,Web 开发工具不直接参与网站的创建,而用于测试网站或网页应用的用户界面。Web 开发工具便于开发人员调试各种浏览器网页处理技术,例如HTML、CSS、DOM、JavaScript,显示每个资源页面的请求以及载入所花费的时间等。
函数解析
io.Reader 是 Go 语言标准库中的一个接口类型,它定义了一个基本的读取操作。任何实现了 Read(p []byte) (n int, err error) 方法的类型,都可以被视为 io.Reader 的实例。
json.Marshal 是 Go 语言标准库中的一个函数,用于将数据结构转换为 JSON 格式的字节数组。它接受一个参数,可以是任何可序列化的 Go 数据类型(比如结构体、映射、切片、基本类型等),并返回一个表示 JSON 数据的字节数组和一个可能的错误。
bufio.Reader 是 Go 语言标准库中的一个类型,用于提供带缓冲的读取功能。它封装了一个 io.Reader 接口,并在其基础上提供了一些额外的方法,以提供更高效和方便的读取操作。
socks5代理
函数解析
fmt.Sprintf 是 Go 语言中的一个函数,它用于格式化字符串并返回一个格式化后的新字符串。
通过使用 fmt.Sprintf("%d.%d.%d.%d", buf[0], buf[1], buf[2], buf[3]),这四个字节将被插入到格式化字符串中的对应位置,最终生成一个标准的 IPv4 地址字符串。