Go 学习笔记:Println 与 Printf 的区别,以及 Printf 的详细用法「建议收藏」

Go 学习笔记:Println 与 Printf 的区别,以及 Printf 的详细用法「建议收藏」Println与Printf都是fmt包中的公共方法,在需要打印信息时需要用到这二个函数,那么这二个函数有什么区别呢?

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Println 与Printf 都是fmt 包中的公共方法,在需要打印信息时需要用到这二个函数,那么这二个函数有什么区别呢?

Println :可以打印出字符串,和变量
Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整形

也就是说,当需要格式化输出信息时一般选择 Printf,其他时候用 Println 就可以了,比如:

a := 10
fmt.Println(a)  //right
fmt.Println("abc")  //right
fmt.Printf("%d",a)  //right
fmt.Printf(a)  //error

Printf 详细用法

Printf 在使用时需要给它指定一个格式化规则,即第一个参数,那么一共有多少种格式呢,用的时候需要怎么写呢?

package main
import "fmt"
import "os"
type point struct {
    x, y int
}
func main() {
    //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。
    p := point{1, 2}
    fmt.Printf("%v\n", p) // {1 2}
    //如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。
    fmt.Printf("%+v\n", p) // {x:1 y:2}
    //%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。
    fmt.Printf("%#v\n", p) // main.point{x:1, y:2}
    //需要打印值的类型,使用 %T。
    fmt.Printf("%T\n", p) // main.point
    //格式化布尔值是简单的。
    fmt.Printf("%t\n", true)
    //格式化整形数有多种方式,使用 %d进行标准的十进制格式化。
    fmt.Printf("%d\n", 123)
    //这个输出二进制表示形式。
    fmt.Printf("%b\n", 14)
    //这个输出给定整数的对应字符。
    fmt.Printf("%c\n", 33)
    //%x 提供十六进制编码。
    fmt.Printf("%x\n", 456)
    //对于浮点型同样有很多的格式化选项。使用 %f 进行最基本的十进制格式化。
    fmt.Printf("%f\n", 78.9)
    //%e 和 %E 将浮点型格式化为(稍微有一点不同的)科学技科学记数法表示形式。
    fmt.Printf("%e\n", 123400000.0)
    fmt.Printf("%E\n", 123400000.0)
    //使用 %s 进行基本的字符串输出。
    fmt.Printf("%s\n", "\"string\"")
    //像 Go 源代码中那样带有双引号的输出,使用 %q。
    fmt.Printf("%q\n", "\"string\"")
    //和上面的整形数一样,%x 输出使用 base-16 编码的字符串,每个字节使用 2 个字符表示。
    fmt.Printf("%x\n", "hex this")
    //要输出一个指针的值,使用 %p。
    fmt.Printf("%p\n", &p)
    //当输出数字的时候,你将经常想要控制输出结果的宽度和精度,可以使用在 % 后面使用数字来控制输出宽度。默认结果使用右对齐并且通过空格来填充空白部分。
    fmt.Printf("|%6d|%6d|\n", 12, 345)
    //你也可以指定浮点型的输出宽度,同时也可以通过 宽度.精度 的语法来指定输出的精度。
    fmt.Printf("|%6.2f|%6.2f|\n", 1.2, 3.45)
    //要最对齐,使用 - 标志。
    fmt.Printf("|%-6.2f|%-6.2f|\n", 1.2, 3.45)
    //你也许也想控制字符串输出时的宽度,特别是要确保他们在类表格输出时的对齐。这是基本的右对齐宽度表示。
    fmt.Printf("|%6s|%6s|\n", "foo", "b")
    //要左对齐,和数字一样,使用 - 标志。
    fmt.Printf("|%-6s|%-6s|\n", "foo", "b")
    //到目前为止,我们已经看过 Printf了,它通过 os.Stdout输出格式化的字符串。Sprintf 则格式化并返回一个字符串而不带任何输出。
    s := fmt.Sprintf("a %s", "string")
    fmt.Println(s)
    //你可以使用 Fprintf 来格式化并输出到 io.Writers而不是 os.Stdout。
    fmt.Fprintf(os.Stderr, "an %s\n", "error")
}

可以看到,这种类还是挺多的,但平时经常用的也就前面几种而已,或者可以说,用的最多的就是第一个,,,

关于 Printf 更多的用法和原理方面的解释可以看这二篇帖子
http://www.jianshu.com/p/9637c18d5f01
http://blog.csdn.net/chenbaoke/article/details/39932845

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188716.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用VSCode编写的代码中文乱码的解决方案【临时+永久】

    使用VSCode编写的代码中文乱码的解决方案【临时+永久】问题描述这是由于编码不同而造成的问题,何为编码?常见的如Uncoide,UTF-8,UTF-16,GB2312,GBK,GB18030VSCode默认的文件编码是UTF-8,而你要用C/C++打印中文在屏幕上时就会出现错误。因为打印时中文的输出编码是GBK或者GB18030或者GB2312,就会导致出错。简单来说就是,我用中文,你用英文,当然无法理解了。解决方法临时修改在VSCode状态栏处,你会看到一个UTF-8的字样,点击它,修改为GBK,GB18030或GB231

    2022年7月11日
    66
  • hashmap和hashtable和hashset的区别_的跟得的区别在哪里

    hashmap和hashtable和hashset的区别_的跟得的区别在哪里HashMap和Hashtable的区别两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全。Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法

    2022年9月18日
    2
  • arm linux 移植全部过程「建议收藏」

    arm linux 移植全部过程「建议收藏」armlinux移植全部过程总述功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入总述之前做过linux在powe…

    2022年9月24日
    2
  • 数据结构(严蔚敏版)与算法的实现(含全部代码)

    数据结构(严蔚敏版)与算法的实现(含全部代码)目录基础c/c++代码优化及常见错误c语言位运算的妙用-程序优化c/c++进制转换方法汇总(含全部代码)二进制数-北邮2012研究生复试质因子分解除树和图外的数据结构可以使用STL:C++STL的使用数据结构线性表顺序表循环左移(2010联考真题)单链表单链表相邻结点逆置(2019北邮考研真…

    2022年6月28日
    23
  • clientheight什么意思_汇编中offset是什么意思

    clientheight什么意思_汇编中offset是什么意思许多文章已经介绍了clientHeight和offsetHeight的区别,就是clientHeight的值不包括scrollbar的高度,而offsetHeight的值包括了scrollbar的高度。然而,clientHeight和offsetHeight的值到底由什么组成的呢?如何计算这两个数的值?1.clientHeight和offsetHeight的值由什么决定?假如我们…

    2025年10月19日
    3
  • linux如何查看所有的用户和组信息?

    linux如何查看所有的用户和组信息?

    2021年10月27日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号