Go1.19:fmt Package新增方法fmt.Append

Go1.19:fmt Package新增方法fmt.Append

前言: 写Go的同学都知道fmt是用到最多的一个包,在1.19版本的更新中fmt新增三个方法fmt.Appendfmt.Appendffmt.Appendln。这三个方法对应的用法和fmt.Printfmt.Printffmt.Println是一致的。本文主要从作用、用法,和应用场景展开论述。

Main

1.fmt.Append系列方法的作用

fmt.Append的作用是将一个值追加到一个字节切片中,并返回新的字节切片。它的用法类似于fmt.Sprintf,只不过它不返回一个字符串,而是返回一个[]byte

fmt.Appendfmt.Appendffmt.Appendln的区别是:

  • fmt.Append的第二个参数是一个值,而fmt.Appendf的第二个参数是一个格式化字符串。
  • fmt.Append不需要指定格式化动词,而fmt.Appendf需要指定格式化动词。
  • fmt.Append可以接受任意类型的值,而fmt.Appendf只能接受和格式化动词匹配的类型的值。
  • fmt.Appendlnfmt.Append接收参数一样,不一样的是fmt.Appendln会在追加值后添加换行符\n

2.fmt.Append系列方法的作用

var b []byte
//fmt.Append
b = fmt.Append(b, 42) // b == []byte{42}
//fmt.Appendf
b = fmt.Appendf(b, "%d", 42) // b == []byte("42")
fmt.Appendln
b = fmt.Appendln(b, "Hello", "world") // b == []byte("Hello world\n")
b = fmt.Appendln(b, 42) // b == []byte("Hello world\n42\n")

例如:

func main() {
	var b = []byte("42")

	b = fmt.Appendf(b, "42")
    fmt.println(b)//[52 50 52 50]
	// 方法一
	fmt.Println(string(b))//4242
	// 方法二
	fmt.Println(fmt.Sprintf("%s", b))
	// 方法三
	fmt.Printf("%s\n", b)
}

注: 直接打印字节切片会打印切片中相应的ASCII码

要修改代码使得输出的是4242,有以下几种方法:

  • 使用string函数将b转换为字符串,然后打印
  • 使用fmt.Sprintf函数将b格式化为字符串,然后打印
  • 使用fmt.Printf函数直接将b格式化并打印

3.fmt.Append的应用场景

  • 当需要将多个值格式化为一个字节切片时,可以使用fmt.Append,而不需要创建多个字符串或使用缓冲区
  • 当需要将格式化的字节切片写入文件或网络时,可以使用fmt.Append,而不需要先转换为字符串
  • 当需要在循环中逐步构建一个字节切片时,可以使用fmt.Append,而不需要每次都创建一个新的字节切片

结束语: 如果对您有帮助!点个赞👍加个关注吧❤️,有问题评论区留言交流哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值