Golang中的占位符详解

 更新时间:2023年07月10日 11:17:38   作者:路多辛  
这篇文章主要给大家详细总结了Golang中的占位符用法,文章通过代码示例介绍的非常详细,对我们学习Golang占位符有一定的帮助,需要的朋友可以参考下

1、%v:值占位符,将值格式化为一个更紧凑的表示形式。

package main
import (
	"fmt"
)
type user struct {
	name string
	age  int
}
func main() {
	u := user{name: "路多辛", age: 18}
	fmt.Printf("The value is: %v\n", u)
	m := map[string]interface{}{"name": "路多辛", "age": 18}
	fmt.Printf("The value is: %v\n", m)
	fmt.Printf("The value is: %v\n", 666)
}

2、%+v:相比%v,如果是结构体,会带上字段名。

package main
import (
	"fmt"
)
type user struct {
	name string
	age  int
}
func main() {
	u := user{name: "路多辛", age: 18}
	fmt.Printf("The value is: %+v\n", u)
	m := map[string]interface{}{"name": "路多辛", "age": 18}
	fmt.Printf("The value is: %+v\n", m)
	fmt.Printf("The value is: %+v\n", 666)
}

输出结果如下:

The value is: {name:路多辛 age:18}
The value is: map[age:18 name:路多辛]
The value is: 666

3、%#v:该值的go语法表示形式。

package main
import (
	"fmt"
)
type user struct {
	name string
	age  int
}
func main() {
	u := user{name: "路多辛", age: 18}
	fmt.Printf("The value is: %#v\n", u)
	m := map[string]interface{}{"name": "路多辛", "age": 18}
	fmt.Printf("The value is: %#v\n", m)
	fmt.Printf("The value is: %#v\n", 666)
}

输出结果如下:

The value is: main.user{name:"路多辛", age:18}
The value is: map[string]interface {}{"age":18, "name":"路多辛"}
The value is: 666

4、%T:值的类型的go语法表示。

package main
import (
    "fmt"
)
type user struct {
    name string
    age  int
}
func main() {
    u := user{name: "路多辛", age: 18}
    fmt.Printf("The value is: %T\n", u)
    m := map[string]interface{}{"name": "路多辛", "age": 18}
    fmt.Printf("The value is: %T\n", m)
    fmt.Printf("The value is: %T\n", 666)
}

输出结果如下:

The value is: main.user
The value is: map[string]interface {}
The value is: int

5、%%:输出一个字面的百分号。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%%") // 输出 %
}

6、%t:单词 true 或 false。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%t", true) // 输出 true
}

7、%b:二进制表示形式。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%b", 3) // 输出:11
}

8、%c:相应的Unicode码值。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%c%c%c的所思所想", 0x8DEF, 0x591A, 0x8F9B)
  // 输出 路多辛的所思所想
}

9、%d:十进表示形式。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%d", 0x12) // 输出 18
}

10、%o:八进表示形式。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%o", 9) // 输出 11
}

11、%O:八进表示形式,带0o前缀。

package main
import (
    "fmt"
)
func main() {
    fmt.Printf("%O", 9) // 输出 0o11
}

12、%q:将值格式化为一个带有单引号的字符。

package main
import "fmt"
func main() {
    fmt.Printf("%q", 0x8DEF) // 输出 '路'
}

13、%x:将值格式化为一个不带符号的采用十六进制表示的字符。

package main
import "fmt"
func main() {
    fmt.Printf("%x\n", 0x8DEF) // 输出 8def
    fmt.Printf("%x", 13) // 输出 d
}

14、%X:与 %x 不同的是将值格式化为大写字母形式。

package main
import "fmt"
func main() {
    fmt.Printf("%x\n", 0x8DEF) // 输出 8DEF
    fmt.Printf("%x", 13) // 输出 D
}

15、%U:将值格式化为一个带有前缀 "U+"的字符串形式,Unicode格式。

package main
import "fmt"
func main() {
    fmt.Printf("%U\n", 0x8DEF) // 输出 U+8DEF
    fmt.Printf("%U", 13) // 输出 U+000D
}

16、%e:将值格式化为一个带小数点的科学计数法表示形式。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %e\n", 10.1) // 输出 1.010000e+01
}

17、%E 将值格式化为一个带小数点的科学计数法表示形式。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %E\n", 10.1) // 输出 1.010000E+01
}

18、%f:将值格式化为带小数点的浮点数表示形式。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %f\n", 10.1) //  输出 10.100000
}

19、%F:同 %f。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %F\n", 10.1) // 输出 10.100000
}

20、%g:将值格式化为一个合适的表示形式的字符串,可以自动选择带小数点的浮点数表示形式或不带小数点的浮点数表示形式。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %g\n", 10) //  输出 %!g(int=10)
    fmt.Printf("The value is: %g\n", 10.1) //  输出 10.1
  fmt.Printf("The value is: %g\n", 1000000.1) // 输出 1.0000001e+06
}

21、%G:与 %g不同的是,%G会根据值的范围选择采用大写字母或小写字母表示的形式。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %G\n", 10) // 输出 %!G(int=10)
    fmt.Printf("The value is: %G\n", 10.1) // 输出 10.1
    fmt.Printf("The value is: %G\n", 1000000.1) // 输出 1.0000001E+06
}

22、%s 字符串表示形式。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %s\n", "路多辛的博客") // 输出 路多辛的博客
    fmt.Printf("The value is: %s\n", []byte("路多辛")) // 输出 路多辛
}

23、%p:将值格式化为一个指针的地址表示形式,十六进制表示,前缀 0x。

package main
import "fmt"
func main() {
    a := 10
    fmt.Printf("The value is: %p\n", &a) // 输出例如 0xc0000b2008
}

24、%.(数字)s:截取指定长度的字符串。

package main
import "fmt"
func main() {
    fmt.Printf("The value is: %.3s\n", "路多辛的博客") // 输出 路多辛
}

25、%w:将值格式化为一个错误消息的字符串形式。

package main
import (
    "errors"
    "fmt"
)
func main() {
    w := fmt.Errorf("wrapD的错误信息-%w", errors.New("原始错误信息"))
    fmt.Println(w.Error()) // 输出 wrap的错误信息-原始错误信息
}

以上就是Golang中的占位符详解的详细内容,更多关于Golang占位符的资料请关注脚本之家其它相关文章!

相关文章

  • 一文搞懂Golang中的内存逃逸

    一文搞懂Golang中的内存逃逸

    我们都知道go语言中内存管理工作都是由Go在底层完成的,这样我们可以不用过多的关注底层的内存问题。本文主要总结一下 Golang内存逃逸分析,需要的朋友可以参考以下内容,希望对大家有帮助
    2022-09-09
  • Go语言制作svg格式树形图的示例代码

    Go语言制作svg格式树形图的示例代码

    SVG是可伸缩矢量图形 (Scalable Vector Graphics),于2003年1月14日成为 W3C 推荐标准。本文将利用Go语言实现制作svg格式树形图,感兴趣的可以了解一下
    2022-09-09
  • golang 调用c语言动态库方式实现

    golang 调用c语言动态库方式实现

    本文主要介绍了golang 调用c语言动态库方式实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Golang绘制数列趋势图的操作步骤

    Golang绘制数列趋势图的操作步骤

    数列趋势图是用来表示数列中各项之间的变化趋势的图形,它可以帮助我们观察和分析数列的规律和特点,一般来说,数列趋势图可以分为两种类型:折线图和散点图,本文给大家介绍了Golang绘制数列趋势图的操作步骤,文中有详细的代码示例,需要的朋友可以参考下
    2024-04-04
  • Golang日志操作库zap的使用详解

    Golang日志操作库zap的使用详解

    zap 是 uber 开源的一个高性能,结构化,分级记录的日志记录包,本文主要为大家详细介绍了zap的具体使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Golang中本地缓存库cache2go的使用小结

    Golang中本地缓存库cache2go的使用小结

    本文介绍了Go语言本地缓存库cache2go的使用方法和源码分析,cache2go提供了并发安全的读写操作,支持过期时间控制,下面就来详细的介绍cache2go如何创建、添加、读取、删除缓存项及设置回调函数,感兴趣的可以了解一下
    2026-04-04
  • Go语言性能监控和调优的工具和方法

    Go语言性能监控和调优的工具和方法

    本文介绍了Go语言性能监控和调优的工具和方法,包括 pprof、expvar 和 trace 等工具的使用方法和注意事项,以及性能调优的一些常见方法,如减少内存分配、避免频繁的垃圾回收、避免过度查询数据库等,针对不同的程序,应该根据实际情况采用不同的优化方法
    2024-01-01
  • 浅析Go中序列化与反序列化的基本使用

    浅析Go中序列化与反序列化的基本使用

    序列化是指将对象转换成字节流,从而存储对象或将对象传输到内存、数据库或文件的过程,反向过程称为“反序列化”。本文主要介绍了Go中序列化与反序列化的基本使用,需要的可以参考一下
    2023-04-04
  • 详解 Go 语言中 Map 类型和 Slice 类型的传递

    详解 Go 语言中 Map 类型和 Slice 类型的传递

    这篇文章主要介绍了详解 Go 语言中 Map 类型和 Slice 类型的传递的相关资料,需要的朋友可以参考下
    2017-09-09
  • Golang算法问题之数组按指定规则排序的方法分析

    Golang算法问题之数组按指定规则排序的方法分析

    这篇文章主要介绍了Golang算法问题之数组按指定规则排序的方法,结合实例形式分析了Go语言数组排序相关算法原理与操作技巧,需要的朋友可以参考下
    2017-02-02

最新评论