当前位置: 首页 > news >正文

Go语言fmt包中print相关方法

Go语言的fmt包提供了多种打印相关的函数,主要用于在控制台或其他输出目标上格式化并输出数据。下面是一些常用的print相关方法的用途和区别:

1.fmt.Print()

  • 功能fmt.Print() 将参数的内容按默认格式输出到标准输出(通常是控制台),不会添加任何额外的格式或换行符。
  • 特点:
    • 输出内容之间没有分隔符。
    • 不会在输出后自动添加换行符。

2. fmt.Println()

  • 功能fmt.Println() 将参数的内容按默认格式输出到标准输出,并在每个参数之间自动添加空格,最后添加一个换行符。
  • 特点:
    • 参数之间用空格分隔。
    • 输出内容后会自动添加一个换行符。

3. fmt.Printf()

  • 功能fmt.Printf() 允许使用格式化字符串来输出内容。您可以指定格式说明符以控制输出的格式。
  • 特点:
    • 支持各种格式化选项,如整数、浮点数、字符串等。
    • 输出不会自动添加换行符,除非在格式字符串中显式包含换行符。

4. fmt.Sprint()

  • 功能fmt.Sprint() 与 fmt.Print() 类似,但它会将格式化后的字符串返回,而不是直接输出到标准输出。
  • 特点:
    • 返回格式化后的字符串(多个参数间加空格)。
    • 可以将其结果存储在变量中或进行进一步处理。

5. fmt.Sprintf()

  • 功能fmt.Sprintf() 与 fmt.Printf() 类似,但它将格式化后的字符串返回,而不是直接输出到标准输出。
  • 特点:
    • 允许使用格式化字符串来控制输出格式。
    • 返回格式化后的字符串,适用于需要将格式化结果作为字符串使用的情况。

6. fmt.Fprint()fmt.Fprintf()fmt.Fprintln()

  • 功能: 这些函数用于将格式化内容输出到指定的 io.Writer 接口(如文件、网络连接等)。
  • 特点:
    • fmt.Fprint(): 不添加任何分隔符或换行符。
    • fmt.Fprintf(): 使用格式化字符串来控制输出格式。
    • fmt.Fprintln(): 在输出内容之间添加空格,最后添加换行符。

总结

  • fmt.Print(): 输出内容,之间无分隔符,无换行符。
  • fmt.Println(): 输出内容,自动分隔和添加换行符。
  • fmt.Printf(): 格式化输出,支持复杂格式化,输出内容无换行符。
  • fmt.Sprint(): 格式化内容并返回字符串。
  • fmt.Sprintf(): 格式化内容并返回字符串,支持复杂格式化。
  • fmt.Fprint()fmt.Fprintf()fmt.Fprintln(): 输出到指定 io.Writer,支持不同的格式和功能。

7.常见的格式化占位符

1.%s: 输出字符串

  • 用于格式化字符串类型。
fmt.Printf("Hello, %s!\n", "Alice")
// 输出: Hello, Alice!

2.%d: 输出整数

  • 用于格式化十进制整数类型。
fmt.Printf("Number: %d\n", 42)
// 输出: Number: 42

3.%f: 输出浮点数

  • 用于格式化浮点数类型。
fmt.Printf("Float: %f\n", 3.14159)
// 输出: Float: 3.141590

4.%x: 输出十六进制整数

  • 用于格式化整数为十六进制表示。
fmt.Printf("Hex: %x\n", 255)
// 输出: Hex: ff

5.%o: 输出八进制整数

  • 用于格式化整数为八进制表示。
fmt.Printf("Octal: %o\n", 64)
// 输出: Octal: 100

6.%b: 输出二进制整数

  • 用于格式化整数为二进制表示。
fmt.Printf("Binary: %b\n", 5)
// 输出: Binary: 101

7.%c: 输出字符

  • 用于格式化单个字符(基于其整数值)。
fmt.Printf("Character: %c\n", 65)
// 输出: Character: A

8.%p: 输出指针

  • 用于格式化指针地址。
var x int
fmt.Printf("Pointer: %p\n", &x)
// 输出: Pointer: 0xc0000b4000

9.%v: 输出默认格式

  • 用于格式化值的默认表示形式。
fmt.Printf("Value: %v\n", 123)
// 输出: Value: 123

10.%T: 输出类型

  • 用于输出值的类型。
fmt.Printf("Type: %T\n", 123)
// 输出: Type: int

11.%+v: 输出结构体时显示字段名

  • 用于格式化结构体时,显示字段名。
type Person struct {Name stringAge  int
}
p := Person{"Alice", 30}
fmt.Printf("Person: %+v\n", p)
// 输出: Person: {Name:Alice Age:30}

12.%#v: 输出值的 Go 语法表示

  • 用于格式化值为 Go 语言的语法表示。
fmt.Printf("Go syntax: %#v\n", 123)
// 输出: Go syntax: 123

13.%e: 输出浮点数的科学记数法

  • 用于浮点数的科学记数法表示。
fmt.Printf("Scientific: %e\n", 1234.567)
// 输出: Scientific: 1.234567e+03

14.%g: 输出浮点数的最简洁表示

  • 用于浮点数的最简洁表示(自动选择 %f 或 %e)。
fmt.Printf("Compact: %g\n", 155555534.233)
// 输出: Compact: 1.55555534233e+08fmt.Printf("Compact: %g\n", 155534.233)
// 输出: Compact: 155534.233

格式化标志

除了占位符本身,您还可以使用格式化标志来控制输出的宽度、对齐、精度等。常见的格式化标志包括:

  • %5d: 输出一个宽度为 5 的整数,右对齐,不足部分填充空格。
  • %-5d: 输出一个宽度为 5 的整数,左对齐,不足部分填充空格。
  • %.2f: 输出浮点数,保留两位小数。
fmt.Printf("Right-aligned: %5d\n", 42)
//输出:Right-aligned:    42fmt.Printf("Left-aligned: %-5d\n", 42)
//输出:Left-aligned: 42   fmt.Printf("Float with precision: %.2f\n", 3.14159)
//输出:Float with precision: 3.14

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android实时通信:WebSocket与WebRTC的应用与优化
  • 智能合约中重放攻击
  • 【SpringMVC】详细了解SpringMVC中WEB-INF 目录资源,视图解析器和静态资源放行的使用。
  • 从0开始安装一个本地K8s环境
  • sqlalchemy时间范围查询
  • WPF篇(13)-ScrollViewer控件+ScrollBar滚动条+Slider滑动条
  • Elasticsearch分片的主动迁移
  • controller 中 worker 最不适合做什么操作
  • 超简单!用这两款AI工具,小白也能轻松打造个人写真
  • 【Linux基础】Linux基本指令(二)
  • Gemma 2 2B:针对小型 LLM 提示工程关注点
  • Nginx+Tomcat负载均衡、动静分离群集
  • 基于HTML弹性布局做的支付宝界面
  • Mamba 永远不会忘记任何标记
  • 【iOS】OC关键字总结及底层原理(下)
  • 【5+】跨webview多页面 触发事件(二)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【知识碎片】第三方登录弹窗效果
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • github从入门到放弃(1)
  • Javascript Math对象和Date对象常用方法详解
  • JS数组方法汇总
  • leetcode-27. Remove Element
  • pdf文件如何在线转换为jpg图片
  • python 装饰器(一)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 测试开发系类之接口自动化测试
  • 基于游标的分页接口实现
  • 利用jquery编写加法运算验证码
  • 码农张的Bug人生 - 见面之礼
  • 浅谈web中前端模板引擎的使用
  • 微信小程序设置上一页数据
  • 一个完整Java Web项目背后的密码
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • zabbix3.2监控linux磁盘IO
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # 数论-逆元
  • #1014 : Trie树
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $.proxy和$.extend
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (第一天)包装对象、作用域、创建对象
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十一)c52学习之旅-动态数码管
  • (十一)图像的罗伯特梯度锐化
  • (五)activiti-modeler 编辑器初步优化
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 回调、接口回调、 委托
  • .NET 解决重复提交问题
  • .NET 依赖注入和配置系统
  • .NET6 命令行启动及发布单个Exe文件
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接