[解決済み] スライス内の要素を削除する
2022-05-09 09:07:14
質問内容
func main() {
a := []string{"Hello1", "Hello2", "Hello3"}
fmt.Println(a)
// [Hello1 Hello2 Hello3]
a = append(a[:0], a[1:]...)
fmt.Println(a)
// [Hello2 Hello3]
}
このappend機能によるdeleteの仕掛けはどうなっているのでしょうか?
最初の要素(空の配列)より前のすべてをつかんでいるように見えますが
そして、最初の要素(位置ゼロ)以降のすべてを追加します。
は何をするのか?(ドット・ドット・ドット)は何をするのですか?
どのように解決するのですか?
どこ
a
はスライス、そして
i
は削除したい要素のインデックスです。
a = append(a[:i], a[i+1:]...)
...
はGoの変量引数のためのシンタックスです。
基本的に
定義
関数は、あなたが渡したすべての引数を、その型のひとつのスライスに入れます。そうすることで、好きなだけ引数を渡すことができる(例えば。
fmt.Println
は好きなだけ引数を取ることができます)。
では
呼び出し
という関数があります。
...
はその逆で、スライスを展開し、それらを別々の引数として可変個体関数に渡します。
では、この行は何をするかというと
a = append(a[:0], a[1:]...)
は基本的に
a = append(a[:0], a[1], a[2])
さて、不思議に思うかもしれませんが、どうして
a = append(a[1:]...)
さて、関数定義の
append
は
func append(slice []Type, elems ...Type) []Type
つまり、最初の引数は正しい型のスライスでなければならず、2番目の引数はバリアディックなので、空のスライスを渡し、残りのスライスを解凍して引数を埋めるのです。
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】golangでデータ構造をディープコピーする
-
[解決済み] Goで配列を反転させるにはどうしたらいいですか?
-
[解決済み] キューの実装はありますか?
-
[解決済み] SDL2 パッケージを提供する必要なモジュールはありません。
-
goland reports an error: package XXX is not in GOROOT (X:\XXXGo ╱src╱XXX)
-
[解決済み] パッケージ <package_name> を提供するモジュールの go.sum のエントリがありません。
-
[解決済み] デュレーションと整数を掛け合わせる方法は?
-
[解決済み] "宣言されているが使用されていない "という迷惑なエラーを回避する方法
-
eclipse+goclipseプラグイン+gdbによるgo言語開発デバッグ環境の構築 ---最終起動シーケンスでのエラー MIコマンドの実行に失敗しました。
-
[解決済み】チャンネルを開いたままにしておいてもいいのでしょうか?