golang 基础 fmt 包(35)

zidea · · 1612 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 语言程序设计


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:zidea

查看原文:golang 基础 fmt 包(35)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1612 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传