Go 格式化输出

本文介绍了Go语言中fmt包的格式化输出类型,包括整型、浮点型、布尔型和字符串的格式化。特别讨论了rune类型,作为int32的别名,用于处理字符串中的字符。通过示例展示了如何利用rune统计中英文混合字符串的字符数,并提供了相关的格式化输出实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.Go格式化输出类型

二.Go中rune类型说明

三.实例展示


一.Go格式化输出类型

Go语言fmt包的格式化输出类型:

Go格式化输出类型
类型       说明
%d        int变量
%x,%o,%b十六进制、八进制、二进制的int变量
%f,%g,%e        单精度浮点型、双精度浮点型、科学计数法表示
%t布尔变量,true或false
%c        rune(unicode标点),Go语言特有的unicode字符类型
%s        字符串
%q带双引号的字符串或单引号的rune
%v会将任意变量以易读的形式输出
%T打印变量类型
%%        字符型百分比类型(%字符本身,类似C中的\\转义)

 

二.Go中rune类型说明

rune在官方说明中是int32的别名,是一种数据类型。他是go语言内在处理字符串及其便捷的字符单位。它会自动按照字符独立的单位去处理方便我们在遍历过程中按照我们想要的方式去遍历。

这样说还是很不清晰,通过一个场景说明更容易理解:

s := "中国人,Chinese"

这样声明一个字符串,这个字符串占用多少字节空间?

由于Golang默认使用的编码格式是UTF-8格式的,UTF-8使用8位来表示一个字节。而汉字使用unicode编码格式来存放,通过占据好几个字节。我们可以通过一些unicode编码表的查询网站查询每个汉字对应的utf-8的编码。如图:

可以发现汉字的UTF-8的编码的确需要3个字节。因此"中国人,Chinese"这个字符串总的长度为:17。

那么如何统计字符串中有多少字符,用rune就可以做到。对于中英文混合的字符串,通过将字符串转换为rune数组,从而将在UTF-8下中单个英文字符占用空间不一致的问题解决,可以统计出字符串有多少字符:

r := []rune(string)

fmt.Printf("len of rune:%d\n",len(r)) 

这种情况下输出为"len of rune:11"

三.实例展示

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	intVar := 100
	floatVar := 3.141593653
	boolVar := true
	stringVar := "中国人,Chinese"
	runeVar := []rune(stringVar)
	fmt.Printf("int format:Dec:%d,Hex:%x,Oct:%o,Bin:%b\n", intVar, intVar, intVar, intVar)
	fmt.Printf("float format:float:%f,double:%g,scieitific:%e\n", floatVar, floatVar, floatVar)
	fmt.Printf("boolen format:%t\n", boolVar)
	fmt.Printf("string format:format1:%s,len of total:%d\n", stringVar, len(stringVar))
	fmt.Printf("string format:%q\n", stringVar)
	fmt.Printf("rune format:%c,formatlen of rune:%d\n", runeVar, len(runeVar))
	fmt.Printf("rune format with single char:%q\n", runeVar)
	fmt.Printf("rune format:len of rune by utf8:%d\n", utf8.RuneCountInString(stringVar))
	fmt.Printf("format v:int:%v,boolen:%v,string:%v\n", intVar, boolVar, stringVar)
	fmt.Printf("format T:int:%T,boolen:%T,string:%T\n",intVar,boolVar,stringVar)
}

输出结果:

int format:Dec:100,Hex:64,Oct:144,Bin:1100100
float format:float:3.141594,double:3.141593653,scieitific:3.141594e+00
boolen format:true
string format:format1:中国人,Chinese,len of total:17
string format:"中国人,Chinese"
rune format:[中 国 人 , C h i n e s e],formatlen of rune:11
rune format with single char:['中' '国' '人' ',' 'C' 'h' 'i' 'n' 'e' 's' 'e']
rune format:len of rune by utf8:11
format v:int:100,boolen:true,string:中国人,Chinese
format T:int:int,boolen:bool,string:string                                                                                  

参考文献:The Go Programming Language

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值