go
常用包总结(一)
这几篇博客主要总结一下go
中常用的包,如:fmt
、flag
、os
、strconv
、sync
、time
。还有其他的很多很多包,无法一一列举,这里也只是总结其中的一些函数。并不是全部:一是由于笔者水平有限,学习go
语言时间并不长,仅仅二十几天而已,二是包的数量太过于庞大,是无法完全搞完的,只能通过官方文档等学习资料慢慢完善。
一、flag
包
flag
包里有函数可以获取命令行参数。并且可以进行解析。
方法一:os.Args
一个命令行参数的切片。
方法二:使用flag
库。
// 创建标记位参数,而后在命令行中指定name的具体值,就可以解析到name里! // 若不指定,name就是aaa的地址!name是个指针!! name := flag.String("name", "aaa", "姓名") // 最后一个参数是提示信息 age := flag.Int("age", 10, "年龄") // 解析 flag.Parse() fmt.Println(*name) fmt.Println(*age) // 法二 var num int flag.IntVar(&num, "num", 111, "数字") flag.Parse() // 其他使用 flag.Args() // 获取普通命令行参数(除去第一个) flag.NArg() // 获取普通命令行参数个数(除去第一个) flag.NFlag() // 获取标记命令行参数个数
二、fmt
包
fmt
包是标准输入输出包。
1.标准输出
fmt.Print(a) // 直接打印变量,输出到stdout,不换行 fmt.Printf("name:%s\n", name) // 格式化 和c的printf一样 %d 十进制 %b 二进制 C没有这个 %o 八进制 0777 %x 十六进制 0x1a %T 输出变量类型 %v 查看变量值--万能(可以用于数组、切片) %#v 加一个描述,更清楚,如是string类型时就加上 "" %p 打印地址 %c 打印字符 %s 打印字符串 %f 打印浮点型 // %.2f %9.2f 宽度9,不足就前面补空格(%-9f右边补空格),小数点后两位 %e 科学计数法输出 %g 根据实际情况自己选择是用%f还是%e格式输出 %t bool类型 %% 输出% %q 整型->字符型输出, 字符串->加""输出 fmt.Println(..) // 和Print一样,但是自动换行 s1 := fmt.Sprintf() // 格式化输出到字符串
2. 标准输入
var s string fmt.Scan(&s) // 以空格、回车为切分,注意空格是分割标记 // 感觉和Scan一样, 空格也是分割标记 // 注意最好Scan和Scanln不要混用,一个项目里要么用Scan,要么用Scanln fmt.Scanln(&s) // 和C的scanf差不多 fmt.Scanf("%s %d", &a, &b)
当输入的内容有空格时fmt
包里的函数都无法完整获取!这时要使用bufio
包
reader := bufio.NewReader(os.Stdin) // 读到 s 里 s,err := reader.ReadString('\n') if err != nil{ // ... }
这篇博客就先简单总结这两个包里的几个用法,下一篇继续总结!