admin管理员组文章数量:1566652
目录
格式化字符串
格式化样式
%s
使用格式
格式化字符串
格式化字节数组
自定义样式
%d
使用格式
格式化整型
%b,%#b
格式化整型
%o,%#o
%x, %#x
格式化整型
格式化字符
格式化字符串
%X, %#X
%v
%+v
%#v
自定义样式
%t
%T
%%
%c
%U
%f
%e
格式化宽度
指定精度
左对齐
参数和参数列表
格式化字符与参数数量不匹配
格式化字符与参数类型不匹配
格式化字符串
由于字符串通常是有书面文本组成的,因此在许多情况下,我们可能希望更好地控制字符串的外观,以便通过标点,换行和缩进使字符串对人类更具可读性。对于一些特殊的使用场景,我们希望保存在程序中的变量值插入到字符串中,这就需要格式化字符串。Go对字符串格式化提供了良好的支持,在 Go 语言中,fmt.Sprintf,fmt.Printf,fmt.Fprintf, Log.Printf, log.Panicf 等函数常常会用到格式化字符串参数。格式化字符串本质上与普通的字符串无异,它是由普通的字符串加上格式化样式和参数组成的。下面我们就来谈谈Go语言的格式化样式。
格式化样式
格式化样式是一种字符串形式,格式化字符以%开头,加上一个表示格式化字符类型的字符串组成了格式化样式。例如, %s表示字符串格式,%d表示整数格式。详细的格式化样式表总结如下:
格式化样式 | 描述 |
---|---|
%s | 输出字符串(string和[]byte)值 |
%d | 输出十进制整数值 |
%b | 输出整型的二进制表示形式 |
%#b | 输出整型的二进制完整表示形式 |
%o | 输出整型的八进制表示形式 |
%#o | 输出整型的八进制完整表示形式 |
%x | 输出整型的十六进制表示形式 |
%#x | 输出整型的十六进制完整表示形式 |
%X | 输出整型的十六进制表示形式(大写) |
%#X | 输出整型的十六进制完整表示形式(大写) |
%v | 输出值的本来形式 |
%+v | 输出值的本来形式,如果值为结构体,对结构体字段名和值展开 |
%#v | 输出Go语法格式的值 |
%t | 输出布尔值 |
%T | 输出值对应的Go语言类型 |
%% | 输出百分号(%) |
%c | 输出Unicode码对应的字符 |
%U | 将Unicode码转换为对应的Unicode码点 |
%f | 输出浮点数 |
%e | 输出数值的科学计数法形式 |
%E | 与%e功能相同 |
%g | 输出紧凑的浮点数 |
%p | 输出指针 |
%q | 格式化字符串,在字符串的两端加上双引号 |
%s
使用格式
%[-][length]s
- | 可选,表示左对齐 |
length | 可选,一个大于0的整数,表示格式化宽度 |
格式化字符串
%s输出字符串。%s可以将string和与string具有相同底层类型的类型输出。
package main
import "fmt"
func main() {
sentence := "I love Go."
fmt.Printf("He say: '%s'\n", sentence)
// output: He say: 'I love Go.'
type S string
fmt.Printf("He say: '%s'\n", S(sentence))
// output: He say: 'I love Go.'
}
格式化字节数组
%s也可以输出字节切片[]byte和字节数组[...]byte。
package main
import "fmt"
func main() {
list := []byte{97, 98, 99}
fmt.Printf("%s\n", list)
// output: abc
array := [4]byte{96, 97, 98, 99}
fmt.Printf("%s\n", array)
// output: `abc
}
自定义样式
通过实现fmt.Stringer接口来定制类型的%s输出。下面的代码定义了一个自定义类型MyInteger,并实现了fmt.Stringer接口,返回一个字符串"funny"。因此无论该类型变量中实际存储的值是什么,%s得到的格式化字符串永远都为"funny",即fmt.Stringer接口的返回值。
package main
import "fmt"
type MyInteger int
func (i MyInteger) String() string {
return "funny"
}
func main() {
var demo1 MyInteger = 23
fmt.Printf("%s\n", demo1)
// output: funny
var demo2 MyInteger = 298
fmt.Printf("%s\n", demo2)
// output: funny
}
%d
使用格式
%[+][-][length]d
+ | 可选,表示右对齐。默认情况下为右对齐 |
- | 可选,表示左对齐 |
length | 可选,一个大于0的整数,表示格式化宽度 |
格式化整型
%d输出整数类型。%d可以将int, int32, int64, uint, uint8, uint16, uint32, uint64和与它们底层类型相同的类型输出。
package main
import "fmt"
func main() {
var number int = 0
fmt.Printf("The value of number is: %d.\n", number)
// output: The value of number is: 0.
var number32 int32 = 1
fmt.Printf("The value of number32 is: %d.\n", number32)
// output: The value of number32 is: 1.
var number64 int64 = 2
fmt.Printf("The value of number64 is: %d.\n", number64)
// output: The value of number64 is: 2.
var numberu uint = 3
fmt.Printf("The value of numberu is: %d.\n", numberu)
// output: The value of numberu is: 3.
var numberu8 uint8 = 4
fmt.Printf("
本文标签: 字符串
版权声明:本文标题:Go格式化字符串 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726470186a1072015.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论