[解決済み] for-loopの中で一意性を確認するには?
2023-02-12 20:31:17
質問
スライス/マップに値があるかどうかをチェックする方法はありますか?
私はスライスに値を追加したいのですが だけ とすれば ではない がスライスの中に存在します。
これは動作しますが、冗長な印象を受けます。もっと良い方法はないでしょうか?
orgSlice := []int{1, 2, 3}
newSlice := []int{}
newInt := 2
newSlice = append(newSlice, newInt)
for _, v := range orgSlice {
if v != newInt {
newSlice = append(newSlice, v)
}
}
newSlice == [2 1 3]
どのように解決するのですか?
あなたのアプローチは、各挿入に線形時間がかかるでしょう。よりよい方法としては
map[int]struct{}
. あるいは
map[int]bool
などとすることもできますが、空の
struct{}
は、追加のスペースを占めないという利点があります。したがって
map[int]struct{}
は整数の集合としてよく使われます。
例として
set := make(map[int]struct{})
set[1] = struct{}{}
set[2] = struct{}{}
set[1] = struct{}{}
// ...
for key := range(set) {
fmt.Println(key)
}
// each value will be printed only once, in no particular order
// you can use the ,ok idiom to check for existing keys
if _, ok := set[1]; ok {
fmt.Println("element found")
} else {
fmt.Println("element not found")
}
関連
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み] Goでマップにキーが含まれているかどうかを確認するには?
-
[解決済み] なぜpythonはforやwhileループの後に'else'を使うのですか?
-
[解決済み] JavaScriptのfor...of構文でループのカウンタ/インデックスを取得する
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み] std::mapで範囲指定for()ループを使用するには?
-
[解決済み】PythonのFORループ内のループカウントを取得する
-
[解決済み】整数の範囲内で反復処理する方法はありますか?
-
[解決済み] Goで2Dスライスを作成する簡潔な方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン