php小編西瓜在這里為大家解答一個問題:“Rust 相當于 Go 中的 append 是什么?”Rust 是一種系統級編程語言,而 Go 是一種并發編程語言。在 Rust 中,相當于 Go 中的 append 函數的功能是使用 Vec 類型的 push 方法。Vec 是 Rust 標準庫中的一個動態數組類型,使用 push 方法可以在數組的末尾添加元素。這種功能類似于 Go 中的 append 函數,但是在 Rust 中需要使用 Vec 的 push 方法實現。通過這種方式,Rust 提供了一種簡單而靈活的方式來操作動態數組。
問題內容
我試圖通過自己閱讀文檔來弄清楚,但對于如何將此 go 函數轉換為 rust 沒有運氣:
func main() { cards := []string{"ace of diamonds", newcard()} cards = append(cards, "six of spades") fmt.println(cards) } func newcard() string { return "five of diamonds" }
登錄后復制
這是不正確的,至少我知道的 cards.append 是錯誤的:
fn main() { let mut cards: [&str; 2] = ["Ace of Diamonds", new_card()]; let mut additional_card: [&str; 1] = ["Six of Spades"]; cards.append(additional_card); println!("cards") } fn new_card() -> &'static str { "Five of Diamonds" }
登錄后復制
解決方法
你不能。就像在 go 中一樣,rust 數組是固定大小的。
類型 [&str; 2]rust 中的
大致相當于 go 中的 [2]string
,但你也不能對其進行 append
。
在 rust 中,最接近 go 切片的是 vec
您可以像這樣使用:
fn main() { let mut cards = vec!["Ace of Diamonds", new_card()]; let additional_cards: [&str; 2] = ["Six of Spades", "Seven of Clubs"]; // for anything that implements `IntoIterator` of cards cards.extend(additional_cards); // or for a single card only cards.push("Three of Hearts"); println!("{cards:?}") } fn new_card() -> &'static str { "Five of Diamonds" }
登錄后復制