Rust 语言的 println! 宏的格式占位符

2024-03-11 12:20

本文主要是介绍Rust 语言的 println! 宏的格式占位符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、占位符

println! 宏的占位符主要基于 Rust 的格式化语法,它支持多种占位符格式来插入和格式化不同的值。除了 {}{:?} 之外,还有其他几种形式:

  1. 基本占位符 {}:用于插入任何实现了 Display trait 的类型的值。

  2. 调试占位符 {:?}:用于插入任何实现了 Debug trait 的类型的值,通常用于调试目的,因为它会提供更详细的输出。

  3. 格式说明符 {:fmt}:其中 fmt 是格式字符串,允许你更详细地控制值的输出。例如,你可以控制整数的基数({:x} 表示十六进制),浮点数的精度({:.2f} 表示两位小数),字符串的宽度和对齐方式等。

    let num = 255;
    println!("Hex: {:x}", num); // 输出: Hex: ff
    
  4. 命名参数 {name}:在复杂的格式化字符串中,你可以给占位符命名,并在后面通过 format! 宏的参数列表提供值。

    let name = "Alice";
    let age = 30;
    println!("Name: {name}, Age: {age}", name=name, age=age);
    // 输出: Name: Alice, Age: 30
    
  5. 位置参数 {0}{1}:你也可以通过位置来引用 format! 宏参数列表中的值。位置从 0 开始。

    let name = "Alice";
    let age = 30;
    println!("Name: {0}, Age: {1}", name, age);
    // 输出: Name: Alice, Age: 30
    
  6. 宽度、精度和填充:你可以在格式说明符中指定字段的宽度、精度和填充字符。

    let num = 123;
    println!("Number: {:>10}", num); // 输出: Number:      123 (右对齐,总宽度为10)
    println!("Number: {:<10}", num); // 输出: Number: 123      (左对齐,总宽度为10)
    println!("Number: {:^10}", num); // 输出: Number:   123   (居中对齐,总宽度为10)
    println!("Number: {:0>10}", num); // 输出: Number: 0000000123 (右对齐,用0填充至总宽度10)
    
  7. 二进制、八进制、十进制和十六进制:你可以使用不同的格式说明符来以不同的基数显示整数。

    let num = 255;
    println!("Dec: {:d}", num); // 输出: Dec: 255 (十进制)
    println!("Hex: {:x}", num); // 输出: Hex: ff  (十六进制)
    println!("Bin: {:b}", num); // 输出: Bin: 11111111 (二进制)
    println!("Oct: {:o}", num); // 输出: Oct: 3ff  (八进制)
    

这些格式说明符可以组合使用,以提供几乎无限的格式化选项。如果你需要更复杂的格式化,还可以查阅 Rust 的官方文档来了解更多细节和可用的格式化选项。

二、关于 fmt 占位符

在 Rust 的格式化字符串中,{:fmt} 是一个占位符,其中 fmt 表示具体的格式说明符。这些格式说明符用于控制如何显示不同类型的数据。以下是一些常用的格式说明符的详细清单:

整数类型

  • {:d}{}:十进制表示。
  • {:x}{:X}:十六进制表示,小写 x 为小写字母,大写 X 为大写字母。
  • {:o}:八进制表示。
  • {:b}:二进制表示。
  • {:#b}{:#o}{:#x}{:#X}:带有前缀的二进制、八进制、十六进制表示(例如 0b10100o123)。
  • {:0width}:用零填充到指定的宽度。

浮点数类型

  • {:f}:默认的小数表示。
  • {:.precision}{:f.precision}:指定小数点后的精度。
  • {:e}:科学计数法表示。
  • {:E}:科学计数法表示,使用大写 E
  • {:g}{:G}:根据数值大小自动选择 fe/E 表示法。
  • {:a}{:A}:十六进制浮点数表示。

字符串和字符类型

  • {:s}:字符串表示。
  • {:c}:字符表示。
  • {:width}:指定最小字段宽度。
  • {:>width}{:<width}{:^width}:指定宽度和对齐方式(右对齐、左对齐、居中对齐)。
  • {:.width}:截断到指定宽度。
  • {:-}:左对齐,且不使用空格填充。
  • {:+}:对于数值类型,总是在正数前面显示加号。
  • {: }(包含一个空格):在正数前面添加空格。

其他

  • {:?}:调试格式,通常用于显示枚举和复合类型的内部表示。
  • {:p}:指针的地址表示。
  • {:#}:对于某些类型(如浮点数),使用替代格式。
  • {:width$}:位置参数,用于指定宽度等属性的值。

组合使用

格式说明符可以组合使用,例如 {:010.2f} 会将浮点数格式化为宽度至少为10(不足部分用0填充),且小数点后有两位的字符串。

这只是格式说明符的一部分清单,Rust 的格式化系统非常灵活和强大,支持更多的选项和组合。要获取完整的格式说明符清单和更详细的信息,建议查阅 Rust 的官方文档或相关资源。

这篇关于Rust 语言的 println! 宏的格式占位符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797790

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个