golang 基础系列分享,之前的内容比较粗而且有的存在问题,我在发布新的内容还同时不断更新之前的分享希望大家关注,也希望对于您学习 go 这门语言有所帮助。
在之前分享中用的最多就是 fmt
包来将结果输出便于学习和调试。fmt
这包提供打印函数将字符串输出到控制台、文件或其他满足 io.Writer 抽象类型的值
这部分内容比较繁琐需要记忆的指令符号和修饰符号比较多,可以具体输出进行查找。
格式化布尔值
fmt.Printf("%t %t\n", true, true)
整数格式化
fmt.Printf("|%b|%9b|%-9b|%09b|% 9b|\n",37,37,37,37,37)
|100101| 100101|100101 |000100101| 100101|
- %b 表示将数值输出为二进制
- 9表示在输出长度为9,右对齐
- -9表示输出长度为 9,左对齐
- 09 表示用 0 占位
- 最后一个表示用空格占位
fmt.Printf("|%o|%#o|%# 8o|%#+ 8o|%+08o|\n",41,41,41,41,41)
|51|051| 051| +051|+0000051|
- 使用 # 修饰符可以切换格式,从而输出以 0 开头
- + 修饰符会强制输出正号
num := 123
fmt.Printf("|$%d|$%06d|$%+06d|$%s|\n", num, num, num, Pad(num, 6, '*'))
func Pad(number, width int, pad rune) string{
s := fmt.Sprint(number)
gap := width - utf8.RuneCountInString(s)
if gap > 0{
return strings.Repeat(string(pad),gap) + s
}
return s
}
- 这里用到 utf8 的 RuneCountInString 函数来字符串的长度。
- 可以自己定义输出格式这里接收参数(数值,长度,以及补位的占位符)
这样输出就更加自由。
格式化字符
str1 := "welcome to zidea zone"
i := strings.Index(str1,"t")
fmt.Printf("|%.10s|%.*s|%-22.10s|%s|\n",str1,i,str1,str1,str1)
输出如下
|welcome to|welcome |welcome to |welcome to zidea zone|
- .10 表示截取前 10 个字符
- .表示截取到,* 需要传入一个表示位置参数来确定,所以这里是两个参数。
- 22 表示长度,.10 表示截取前 10 - 表示左对齐
参考 Go 语言程序设计
有疑问加站长微信联系(非本文作者)