go常用包总结(一) 青训营

简介: go常用包总结(一) 青训营

go常用包总结(一)

这几篇博客主要总结一下go中常用的包,如:fmtflagosstrconvsynctime。还有其他的很多很多包,无法一一列举,这里也只是总结其中的一些函数。并不是全部:一是由于笔者水平有限,学习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{
  // ...
}

这篇博客就先简单总结这两个包里的几个用法,下一篇继续总结!

相关文章
|
1月前
|
Go 数据库
Go语言中的包(package)是如何组织的?
在Go语言中,包是代码组织和管理的基本单元,用于集合相关函数、类型和变量,便于复用和维护。包通过目录结构、文件命名、初始化函数(`init`)及导出规则来管理命名空间和依赖关系。合理的包组织能提高代码的可读性、可维护性和可复用性,减少耦合度。例如,`stringutils`包提供字符串处理函数,主程序导入使用这些函数,使代码结构清晰易懂。
95 11
|
2月前
|
Linux Go iOS开发
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
本文介绍了如何在 VSCode 中禁用点击 Go 包名时自动打开浏览器跳转到 pkg.go.dev 的功能。通过将 gopls 的 `ui.navigation.importShortcut` 设置为 "Definition",可以实现仅跳转到定义处而不打开链接。具体操作步骤包括:打开设置、搜索 gopls、编辑 settings.json 文件并保存更改,最后重启 VSCode 使设置生效。
82 7
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
|
3月前
|
Go 索引
go语言使用strings包
go语言使用strings包
57 3
|
3月前
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
46 3
|
4月前
|
存储 Go 数据库
Go语言Context包源码学习
【10月更文挑战第21天】Go 语言中的 `context` 包用于在函数调用链中传递请求上下文信息,支持请求的取消、超时和截止时间管理。其核心接口 `Context` 定义了 `Deadline`、`Done`、`Err` 和 `Value` 方法,分别用于处理截止时间、取消信号、错误信息和键值对数据。包内提供了 `emptyCtx`、`cancelCtx`、`timerCtx` 和 `valueCtx` 四种实现类型,满足不同场景需求。示例代码展示了如何使用带有超时功能的上下文进行任务管理和取消。
|
5月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
138 3
|
6月前
|
编译器 数据库连接 Go
Go Sync 包:并发的 6 个关键概念
Go Sync 包:并发的 6 个关键概念
|
6月前
|
Go 开发者
|
6月前
|
编译器 Go 开发者
Go 程序中的包:定义、作用与应用指南
【8月更文挑战第31天】
121 0
|
6月前
|
缓存 Go
Go引用包版本更新但是被引用的包的子包并没有出现在vendor中的问题和解决方案
文章讨论了在Go模块项目中升级依赖包版本时遇到的子包未出现在vendor目录的问题,并提供了直接删除旧版本引用并重新执行`go mod vendor`的解决方案。
68 0