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语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

Rust 智能指针的使用详解

《Rust智能指针的使用详解》Rust智能指针是内存管理核心工具,本文就来详细的介绍一下Rust智能指针(Box、Rc、RefCell、Arc、Mutex、RwLock、Weak)的原理与使用场景,... 目录一、www.chinasem.cnRust 智能指针详解1、Box<T>:堆内存分配2、Rc<T>:

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路