golang 基础 fmt 包(35)

golang_real.jpg

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 - 表示左对齐
square-gopher.png

参考 Go 语言程序设计

你可能感兴趣的:(golang 基础 fmt 包(35))