iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

再來我們會介紹 println! 的其他用法

顯示第幾個參數

參數的序號從 0 開始算,我們可以在 {} 指定要顯示哪個參數

struct A {
    aa: i32,
    bb: i32,
}

fn main() {
    let instance = A { aa: 1, bb: 2 };
    println!("第一個:{0}, 第二個:{1}", instance.aa, instance.bb);
}
> cargo run

第一個:1, 第二個:2

如果要先顯示第二個參數呢?

struct A {
    aa: i32,
    bb: i32,
}

fn main() {
    let instance = A { aa: 1, bb: 2 };
    println!("第二個:{1}, 第一個:{0}", instance.aa, instance.bb);
}
> cargo run

第二個:2, 第一個:1

為參數指定名稱

如果參數有名稱的話,我們也可以在 {} 指定名稱

struct A {
    aa: i32,
    bb: i32,
}

fn main() {
    let instance = A { aa: 1, bb: 2 };
    println!(
        "第一個:{first}, 第二個:{second}",
        first = instance.aa,
        second = instance.bb
    );
}
> cargo run

第一個:1, 第二個:2

小數點

如果要輸出的值是浮點數,我們可以指定他要到第幾位

整數其實也可以指定,不過因為他的型態是整數,所以不會有小數點出現

來看一下應用在整數會怎樣

struct A {
    aa: i32,
    bb: i32,
}

fn main() {
    let instance = A { aa: 1, bb: 2 };
    println!("第一個:{:.2}, 第二個:{:.1}", instance.aa, instance.bb);
}

執行後一樣是顯示整數

> cargo run

第一個:1, 第二個:2

接下來,來看浮點數

struct A {
    aa: f64,
    bb: f64,
}

fn main() {
    let instance = A { aa: 1.1, bb: 2.1 };
    println!("第一個:{:.2}, 第二個:{:.10}", instance.aa, instance.bb);
}
> cargo run

第一個:1.10, 第二個:2.1000000000

資料寬度

指定輸出要呈現多少寬度

fn main() {
    let say_hello = "Hello".to_string();
    println!("打招呼要記得說 {:10}!", say_hello);
}

裡面填多少數字,該輸出就會有多少字元

> cargo run

打招呼要記得說 Hello     !

除此之外,我們還可以填充字串進去

fn main() {
    println!("打招呼要記得說 {:10}!", "hello");
}
> cargo run

打招呼要記得說 hello     !

對齊

除了可以填充字串進去外,還可以指定他需要擺在哪個位置,

目前有開頭 / 中間 / 結尾

開頭就不說了,平常的輸出應該都是出現在開頭

位置在中間的話:

fn main() {
    println!("打招呼要記得說 {:>10}!", "hello");
}
> cargo run

打招呼要記得說   hello   !

位置在結尾的話:

fn main() {
    println!("打招呼要記得說 {:^10}!", "hello");
}
> cargo run

打招呼要記得說      hello!

其實還有很多用法,如果各位有興趣的話也可以去查一下


上一篇
Day 27 - 輸出 part 1
下一篇
Day 29 - 單元測試
系列文
成為程式界的 F1 賽車手,用 30 天認識 Rust 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
hello world
iT邦新手 5 級 ‧ 2023-10-14 00:20:10

很棒耶,列舉好多不同的用法,^>我都沒用過,另外還有一種寫法,只是我還不太習慣用:

fn main() {
    let a = "hello";
    let b = 50;
    let c = 3.24;
    println!("a:{a:10}, b:{b}, c: {c:.4}.");
}
a:hello     , b:50, c: 3.2400.

我要留言

立即登入留言