day1_1:
1.Go语言中,package是一个编译单元。同一个package下的文件在编译时会合并在一起,如果import了相同的包,会在编译时报重复导入的编译错误。
2.fmt.Println(u)
day1_2_1
1.个别常见包总结:
"bufio"
"os"
"strconv"
2.time.Now().UnixNano()将当前时间转换为Unix时间(自1970年1月1日以来的秒数+纳秒偏移量)。
rand.Seed()用来设置rand包的全局种子,只需要调用一次。
由于rand.Seed()之所以在1.16版本被弃用,是因为它不是线程安全的。在1.16版本中,rand.Seed()被替换为rand.NewSource()。
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
seed := time.Now().UnixNano()
source := rand.NewSource(seed)
r := rand.New(source)
secretNumber := r.Intn(maxNum)
3.在不同的操作系统上,换行符表示有些差异:
在 Linux/Unix 系统中,换行符是 \n
在 Windows 系统中,换行符是 \r\n,其中 \r 是回车符,\n 是换行符
在 Mac OS 中,older版本使用 \r 作为换行符,现代版本使用 \n 作为换行符
input = strings.TrimSuffix(input, "\r")
input = strings.TrimSuffix(input, "\n")
guess, err := strconv.Atoi(input)
4.fmt.Scanln()会阻塞程序的执行,直到用户按下回车键,然后将用户输入的内容读取出来。类似于c语言中sys
var input string
_, err := fmt.Scanf("%s \n", &input)