Go バイナリ ツリーの等価性演習でトラバーサルの終了を適切に通知するにはどうすればよいですか?
Go ツアー演習 #7: バイナリ ツリーの等価性
Go ツアーでバイナリ ツリーの等価性演習を試行すると、次のような問題が発生する可能性があります。ツリーに要素がなくなったときのシグナリングの課題。指定されたコードはチャネルを使用してツリーからの値を通信しようとしますが、このシグナリングの問題に対処できません。
問題
再帰的走査中にチャネルを閉じる値の送信を途中で終了します。 Walk() 関数内で close(ch) を使用すると、すべての値が送信される前にチャネルが閉じられます。
クロージャーを使用した解決策
クロージャーを使用すると、匿名の周囲のスコープから変数を取得する関数。これを使用して、実行完了時にチャネルを自動的に閉じるカスタム ウォーク関数を生成できます。
func Walk(t *tree.Tree, ch chan int) { defer close(ch) // Automatically closes the channel when this function returns var walk func(t *tree.Tree) walk = func(t *tree.Tree) { if t == nil { return } walk(t.Left) ch <- t.Value walk(t.Right) } walk(t) }
このソリューションでは、Walk() 関数はツリーの走査を処理するウォーク クロージャを返します。 。クロージャが終了すると、チャネルが自動的に閉じられ、これ以上送信する値がないことが示されます。これにより、受信側はトラバーサルがいつ完了するかを確実に判断できるようになります。
以上が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 Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
