gpt4 book ai didi

arrays - 在 GoLang 和 Rust 中初始化字符串数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:14 26 4
gpt4 key购买 nike

我想初始化一个二维数组,其中内部数组的每个成员都包含一个由 1000 个 x 组成的字符串。像这样的东西:

var data = [num_rows][num_cols]string("x....x(upto 1000)")

但是所有的谷歌搜索都是徒劳的。在 C++ 中,我可以实现类似的事情:

vector<vector<string>> data(num_rows, vector<string>(num_cols, string("x",1000)));

在 Ruby 中是这样的:

Array.new(num_rows) { Array.new(num_cols) { "x"*1000 } }

想在 go 中实现类似的结果,但我找不到任何文档来填充字符串和初始化二维数组。另请注意,我想为数组的每个成员生成字符串,而不是使用可用的字符串。

PS : 我也在寻找 Rust 中类似的东西

最佳答案

在 Rust 中,这取决于您要将这些值用于什么目的。我喜欢this answer用于创建重复的字符串。 “行”取决于您是否想要在 Rust 中明确表示的引用或复制语义。 borrows 向量是一串借用的字符串,它们引用回 x_s 拥有的内存。 copies 向量是原始 x_s 字符串的一堆内存副本。

use std::iter;

fn main() {
let num_rows = 1000;
let num_cols = 1000;

let x_s : String = iter::repeat('x').take(num_cols).collect();

// pick one of the below
let borrows : Vec<&str> = vec![&*x_s ; num_rows];
let copies : Vec<String> = vec![x_s.clone() ; num_rows];
}

在最后一行调用 clone 是因为 vec 宏移动了发送到其中的值。在 copies 的情况下,vec 宏还将克隆此克隆 num_rows 次。请注意,在大多数用例中,此 clone 可能不是必需的,因为您通常不会在同一范围内同时拥有 borrowscopies .

作为一个警告,我对使用rust 还很陌生,但相信这是一个不错的答案。我很乐意接受更正。

关于arrays - 在 GoLang 和 Rust 中初始化字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37590396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com