首页 >后端开发 >Golang >Rust 相当于 Go 中的append 是什么?

Rust 相当于 Go 中的append 是什么?

WBOY
WBOY转载
2024-02-09 10:24:32379浏览

Rust 相当于 Go 中的append 是什么?

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"
}

以上是Rust 相当于 Go 中的append 是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除