golang fmt包Stringer接口测试实例

本文介绍了Golang的fmt包中的Stringer接口,包括接口的作用及其实现方式,例如int、string和struct类型如何实现String()方法。通过测试输出,展示了未实现String()方法的结构体在格式化输出时的行为,即成员会被逐个格式化并用空格连接。此外,文章还提及Go语言中复合类型的格式化特性,verb会递归应用到每个成员上。
摘要由CSDN通过智能技术生成

Stringer接口结构如下:

type Stringer interface {
    String() string
}

作用:

实现了Stringer接口的类型(即有String方法),定义了该类型值的原始显示。当采用任何接受字符的verb(%v %s %q %x %X)动作格式化一个操作数时,或者被不使用格式字符串如Print函数打印操作数时,会调用String方法来生成输出的文本。

int类型实现String()方法

type intExtend int

func (s intExtend) String() string {
	return fmt.Sprintf("%d extend", int(s))
}

var i int = 5
var ie intExtend = 5
fmt.Printf("%s\n", i) 	// %!s(int=5)
fmt.Printf("%s\n", ie)	// 5 extend

fmt.Printf("%q\n", i)	// \x05
fmt.Printf("%q\n", ie)	// 5 extend

fmt.Printf("%v\n", i)	// 5
fmt.Printf("%v\n", ie)	// 5 extend

fmt.Printf("%x\n", i)	// 5 (数值的16进制)
fmt.Printf("%x\n", ie)	// 3520657874656e64 ( 等同 fmt.Printf("%x\n","5 extend") )

fmt.Printf("%X\n", i)	// 5 (数值的16进制)
fmt.Printf("%X\n&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值