Rust中print和println的區(qū)別實(shí)例解析
print! 和 println! 的區(qū)別
Rust中的print!和println!宏均用于輸出內(nèi)容,兩者的核心差異在于是否自動(dòng)追加換行符。
換行行為不同
print!輸出后不換行,內(nèi)容會(huì)緊接在前一次輸出的末尾。println!會(huì)在輸出后自動(dòng)添加換行符(\n),使后續(xù)輸出從新行開始。
代碼示例
fn main() {
print!("Hello "); // 不換行
println!("World!"); // 換行
print!("數(shù)字: ");
for i in 1..=5 { print!("{} ", i); } // 同一行輸出
println!(); // 手動(dòng)換行
println!("第 1 行"); // 自動(dòng)換行
println!("第 2 行");
}輸出結(jié)果
Hello World!
數(shù)字: 1 2 3 4 5
第 1 行
第 2 行
適用場景
print!的典型用途
- 同一行內(nèi)組合輸出多個(gè)變量或文本。
- 實(shí)現(xiàn)進(jìn)度條等動(dòng)態(tài)更新效果。
- 需精確控制輸出格式(如對(duì)齊)。
println!的常規(guī)用途
- 輸出獨(dú)立完整的日志或調(diào)試信息。
- 需要每段內(nèi)容獨(dú)占一行的場景。
- 大多數(shù)默認(rèn)輸出需求。
兩者均支持格式化參數(shù)(如{}占位符),用法完全一致,僅換行行為不同。
Rust 輸出到命令行
在正式學(xué)習(xí) Rust 語言以前,我們需要先學(xué)會(huì)怎樣輸出一段文字到命令行,這幾乎是學(xué)習(xí)每一門語言之前必備的技能,因?yàn)檩敵龅矫钚袔缀跏钦Z言學(xué)習(xí)階段程序表達(dá)結(jié)果的唯一方式。
在之前的 Hello, World 程序中大概已經(jīng)告訴了大家輸出字符串的方式,但并不全面,大家可能很疑惑為什么 println!( "Hello World") 中的 println 后面還有一個(gè) ! 符號(hào),難道 Rust 函數(shù)之后都要加一個(gè)感嘆號(hào)?顯然并不是這樣。println 不是一個(gè)函數(shù),而是一個(gè)宏規(guī)則。這里不需要更深刻的挖掘宏規(guī)則是什么,后面的章節(jié)中會(huì)專門介紹,并不影響接下來的一段學(xué)習(xí)。
Rust 輸出文字的方式主要有兩種:println!() 和 print!()。這兩個(gè)"函數(shù)"都是向命令行輸出字符串的方法,區(qū)別僅在于前者會(huì)在輸出的最后附加輸出一個(gè)換行符。當(dāng)用這兩個(gè)"函數(shù)"輸出信息的時(shí)候,第一個(gè)參數(shù)是格式字符串,后面是一串可變參數(shù),對(duì)應(yīng)著格式字符串中的"占位符",這一點(diǎn)與 C 語言中的 printf 函數(shù)很相似。但是,Rust 中格式字符串中的占位符不是 "% + 字母" 的形式,而是一對(duì) {}。
實(shí)例:runoob.rs 文件
fn main() {
let a = 12;
println!("a is {}", a);
}使用 rustc 命令編譯 runoob.rs 文件:
$ rustc runoob.rs # 編譯 runoob.rs 文件
編譯后會(huì)生成 runoob 可執(zhí)行文件:
$ ./runoob # 執(zhí)行 runoob
以上程序的輸出結(jié)果是:
a is 12
如果我想把 a 輸出兩遍,那豈不是要寫成:
println!("a is {}, a again is {}", a, a);其實(shí)有更好的寫法:
println!("a is {0}, a again is {0}", a);在 {} 之間可以放一個(gè)數(shù)字,它將把之后的可變參數(shù)當(dāng)作一個(gè)數(shù)組來訪問,下標(biāo)從 0 開始。
如果要輸出 { 或 } 怎么辦呢?格式字符串中通過 {{ 和 }} 分別轉(zhuǎn)義代表 { 和 }。但是其他常用轉(zhuǎn)義字符與 C 語言里的轉(zhuǎn)義字符一樣,都是反斜杠開頭的形式。
fn main() {
println!("{{}}");
}以上程序的輸出結(jié)果是:
{}
到此這篇關(guān)于Rust中print和println的區(qū)別的文章就介紹到這了,更多相關(guān)rust print和println區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
rust中間件actix_web在項(xiàng)目中的使用實(shí)戰(zhàn)
這篇文章主要介紹了rust中間件在項(xiàng)目中的使用實(shí)戰(zhàn),包括自定義中間件,日志中間件,Default?headers,用戶會(huì)話,錯(cuò)誤處理的用法實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Rust中實(shí)例化動(dòng)態(tài)對(duì)象的示例詳解
這篇文章主要為大家詳細(xì)介紹了Rust中實(shí)例化動(dòng)態(tài)對(duì)象的多種方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
Rust語言從入門到精通系列之Iterator迭代器深入詳解
這篇文章主要為大家介紹了Rust語言從入門到精通系列之Iterator迭代器深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Rust使用libloader調(diào)用動(dòng)態(tài)鏈接庫
這篇文章主要為大家介紹了Rust使用libloader調(diào)用動(dòng)態(tài)鏈接庫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Rust調(diào)用C程序的實(shí)現(xiàn)步驟
本文主要介紹了Rust調(diào)用C程序的實(shí)現(xiàn)步驟,包括創(chuàng)建C函數(shù)、編譯C代碼、鏈接Rust和C代碼等步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Rust使用Trait對(duì)象實(shí)現(xiàn)多態(tài)的詳細(xì)步驟
本文詳細(xì)介紹了在Rust中使用Trait對(duì)象實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)的方法,通過一個(gè)圖形渲染系統(tǒng)的案例展示了如何統(tǒng)一管理不同類型的圖形對(duì)象,文章涵蓋了Trait對(duì)象的核心概念、語法、性能考量以及在實(shí)際項(xiàng)目中的應(yīng)用場景,感興趣的朋友跟隨小編一起看看吧2025-11-11

