Go言語でリストから要素を削除する方法
Go 言語では、remove() 関数を使用してリスト要素を削除できます。構文は「list object.Remove(element)」です。parameter 要素は、リスト要素を削除することを示します。 element 要素を空にすることはできません。空でない場合は、削除された要素の値が返されます。空の場合は、例外が報告されます。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
go は、Python の list に似た list パッケージを提供します。このパッケージは、あらゆる種類のデータを格納でき、次のように対応する API を提供します。
type Element func (e *Element) Next() *Element func (e *Element) Prev() *Element type List func New() *List func (l *List) Back() *Element func (l *List) Front() *Element func (l *List) Init() *List func (l *List) InsertAfter(v interface{}, mark *Element) *Element func (l *List) InsertBefore(v interface{}, mark *Element) *Element func (l *List) Len() int func (l *List) MoveAfter(e, mark *Element) func (l *List) MoveBefore(e, mark *Element) func (l *List) MoveToBack(e *Element) func (l *List) MoveToFront(e *Element) func (l *List) PushBack(v interface{}) *Element func (l *List) PushBackList(other *List) func (l *List) PushFront(v interface{}) *Element func (l *List) PushFrontList(other *List) func (l *List) Remove(e *Element) interface{}
その中で、remove() 関数が使用されます。リストの場合 リストから要素を削除します。削除された要素を空にすることはできません。空の場合は、例外が報告されます。
Remove(e *Element) interface{}
パラメータ | 説明 |
---|---|
e | ##リスト要素を削除するには。
- 削除された要素の値を返します。
例 1:
package main import ( "container/list" "fmt" ) func main() { //使用 Remove 在列表中删除元素 listHaiCoder := list.New() listHaiCoder.PushFront("Hello") listHaiCoder.PushFront("HaiCoder") element := listHaiCoder.PushFront("Hello") removeEle := listHaiCoder.Remove(element) fmt.Println("RemoveElement =", removeEle) for i := listHaiCoder.Front(); i != nil; i = i.Next() { fmt.Println("Element =", i.Value) } }
分析:
- list.New を通じてリスト listHaiCoder を作成し、次に PushFront 関数を使用して 3 つの要素をリストに挿入し、次に Remove 関数を使用して最後に挿入された要素を削除しました。 。
- 最後に、削除された要素と削除されたリストを出力します。Remove 関数は、削除された要素の値を返します。同時に、最後に挿入された要素が正常に挿入されたことがわかります。リストから削除されました 削除されました。
- 例 2: 空の要素を削除する
package main import ( "container/list" "fmt" ) func main() { //使用 Remove 在列表中删除空元素,报错 listHaiCoder := list.New() listHaiCoder.PushFront("Hello") listHaiCoder.PushFront("HaiCoder") listHaiCoder.Remove(nil) }
プログラムを実行すると、コンソールの出力は次のようになります:
list パッケージが提供する API を使用すると、リストは確かに非常に便利ですが、使用中に注意しないと、見つけるのが難しいいくつかの落とし穴に遭遇し、その結果、プログラムの結果が期待どおりにならなくなります。ここでの落とし穴は、for ループを介してリストを走査し、すべての要素を削除するときに遭遇する問題です。たとえば、次のサンプル プログラムでは、リストを作成し、0 ~ 3 を順番に格納し、for ループを通じてリストを走査してすべての要素を削除します。
package main import ( "container/list" "fmt" ) func main() { l := list.New() l.PushBack(0) l.PushBack(1) l.PushBack(2) l.PushBack(3) fmt.Println("original list:") prtList(l) fmt.Println("deleted list:") for e := l.Front(); e != nil; e = e.Next() { l.Remove(e) } prtList(l) } func prtList(l *list.List) { for e := l.Front(); e != nil; e = e.Next() { fmt.Printf("%v ", e.Value) } fmt.Printf("n") }
プログラムを実行すると、出力は次のようになります。 ##
original list: 0 1 2 3 deleted list: 1 2 3
for e := l.Front(); e != nil; e = e.Next() { l.Remove(e) }
l.Remove(e)
fmt.Println("delete a element from list")
original list: 0 1 2 3 deleted list: delete a element from list 1 2 3
// remove removes e from its list, decrements l.len, and returns e. func (l *List) remove(e *Element) *Element { e.prev.next = e.next e.next.prev = e.prev e.next = nil // avoid memory leaks e.prev = nil // avoid memory leaks e.list = nil l.len-- return e } // Remove removes e from l if e is an element of list l. // It returns the element value e.Value. func (l *List) Remove(e *Element) interface{} { if e.list == l { // if e.list == l, l must have been initialized when e was inserted // in l or l == nil (e is a zero Element) and l.remove will crash l.remove(e) } return e.Value }
package main import ( "container/list" "fmt" ) func main() { l := list.New() l.PushBack(0) l.PushBack(1) l.PushBack(2) l.PushBack(3) fmt.Println("original list:") prtList(l) fmt.Println("deleted list:") var next *list.Element for e := l.Front(); e != nil; e = next { next = e.Next() l.Remove(e) } prtList(l) } func prtList(l *list.List) { for e := l.Front(); e != nil; e = e.Next() { fmt.Printf("%v ", e.Value) } fmt.Printf("n") }
original list: 0 1 2 3 deleted list:
Go ビデオ チュートリアル
、プログラミング教育 】
以上がGo言語でリストから要素を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...
