初期値と容量の両方でスライスを初期化するにはどうすればよいですか?

WBOY
リリース: 2024-02-08 22:18:30
転載
1013 人が閲覧しました

初期値と容量の両方でスライスを初期化するにはどうすればよいですか?

php エディタ Baicao では、スライスの初期化中に初期値と容量の両方を使用してコードの効率を向上させる方法を紹介します。 PHP では、スライスは必要に応じて動的に拡大または縮小できる動的配列です。通常、スライスを初期化する場合、初期値を指定できますが、容量を直接指定することはできません。ただし、初期値と容量の両方を使用してスライスを初期化する裏技がありますので、見てみましょう。

質問内容

コードの一部は次のとおりです:

リーリー

SlicefibboC には、拡張時に問題を軽減するためにスライスの estimatedsize を予約する vector のような reserved 関数はありません。容量 コピー時間。したがって、初期化時に推定サイズを容量に割り当てることしかできません。しかし、以下のいずれも合法ではありません。

リーリー

この問題に対する解決策はありますか?それとも、コードが不器用で、次の方法しか方法がないのでしょうか。

const estimatedsize = 10000
var init_arr = [...]int{1,1,2,3,5,8,13}
var fibbo []int = make([]int, len(init_arr), estimatedsize)    
}
ログイン後にコピー

解決策

いいえ、これは不可能です。これは、この設計上の決定を導く Go 設計哲学の一部です。「複雑さを隠さない」

あなたの「ぎこちない」コードは、実際には Go でこれを行うための好まれる慣用的な方法ですが、1 つの小さな変更があります:

リーリー

私が (形式以外に) 行った唯一の変更は、完全に冗長だったので、var 宣言から型を削除することでした。言い換えると:### リーリー

コメントで指摘されているように、入力に他に変更を加えない場合は、組み込みの

copy を使用して for ループを削除することもできます。 リーリー

以上が初期値と容量の両方でスライスを初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!