上卷 程序设计
中卷 标准库
- bufio 1.18
- bytes 1.18
- io 1.18
- container 1.18
- encoding 1.18
- crypto 1.18
- hash 1.18
- index 1.18
- sort 1.18
- context 1.18
- database 1.18
- connection
- query
- queryrow
- exec
- prepare
- transaction
- scan & null
- context
- tcp
- udp
- http
- server
- handler
- client
- h2、tls
- url
- rpc
- exec
- signal
- embed 1.18
- plugin 1.18
- reflect 1.18
- runtime 1.18
- KeepAlived
- ReadMemStats
- SetFinalizer
- Stack
- sync 1.18
- atomic
- mutex
- rwmutex
- waitgroup
- cond
- once
- map
- pool
- copycheck
- nocopy
- unsafe 1.18
- fmt 1.18
- log 1.18
- math 1.18
- time 1.18
- timer
下卷 运行时
源码剖析
附录
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
fmt 1.18
格式化 I/O,输入和输出。
输出
内置函数 print/println
默认输出到 stderr
,而 fmt.Print
输出到 stdout
。
Errorf
:构建error
对象。Fprint, Fprintf, Fprintln
:输出到io.Writer
。Sprint, Sprintf, Sprintln
:返回字符串。
%[填充][宽度][.小数位][序号]格式
("% X", "abc") // 61 62 63 ("%02X", []int{0x1, 0xF2}) // [01 F2] 宽度 2,填充 0。 ("%-5s;", "abc") // abc ; 左对齐,宽度 5。 ("%010.4f", 12.3456789) // 00012.3457 总宽 10,小数 4,填充 0。 ("%0*d", 5, 123) // 00123 从参数读取宽度,填充 0。
- 宽度可从参数列表读取。
- 小数位和小数点记入宽度。
- Unocide 字符宽度为
1
。
fmt.Printf("%[1]d %d %[1]d %[3]d", 1, 2, 3) // 1 2 1 3 | | | +- 没有序号的参数,按前一序号递增。 | +- 序号总是从 1 开始。
-
%T
: 输出类型信息。 %v
: 默认格式。
%+v
: 输出 struct 字段名。{x:123}
%#v
: 按 Go 语法格式输出。struct { x int }{x:123}
%p
: 指针。0xc0000bc000
%b
: 整数,二进制。1010
%d
: 整数,十进制。%x
: 十六进制,小写。%X
: 十六进制,大写。%f
: 浮点数%s
: 字符串。
+
: 数字符号 (正数或负数) 。+100
-
: 左对齐(右侧填充) 。#
: 增加前缀。071
、0x16
: 填充空格或省略正数符号。
0
: 填充 0。
如果对象实现了 error
、 Stringer
、 GoStringer
接口,自动调用。
但不要在方法内部调用 fmt
相关函数,以免造成无穷递归而溢出。
type E string func (e E) Error() string { return string(e) } // Error // func (e E) String() string { return string(e) } // Stringer // func (e E) GoString() string { return string(e) } // GoStringer func main() { var e E = "hi!" fmt.Println(e) }
输入
从字符串、文件或终端读取格式化字符串。
太丑,不想写!
func main() { fmt.Scanln() }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论