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

