Go のコールバック関数は関数内のパラメーターとして渡され、特定のイベントまたは条件が発生した後に特定のアクションを実行するために使用され、コードの再利用性とスケーラビリティが向上します。主な機能は次のとおりです。 イベント処理: イベント リスナーのコールバック ハンドラーとして、イベントの発生時にアクションを実行します。データ処理: スライスまたはマップ内の各要素に対して処理が実行されます。インターフェイスの実装: コールバック関数を通じてインターフェイスを実装し、インターフェイス メソッドの動作を提供します。
Go の関数におけるコールバック関数の役割
Go では、コールバック関数は、関数で渡される関数を指します。パラメータとしての関数。特定のイベントまたは条件が発生した後に特定のアクションを実行するために使用されます。ビジネス ロジックをメイン関数ロジックから分離する方法を提供し、コードの再利用性と拡張性を強化します。
文法
func main() { // 定义一个回调函数 cb := func(i int) { fmt.Println("回调函数中的值:", i) } // 将回调函数传递给主函数 doSomething(cb) } func doSomething(f func(int)) { for i := 0; i < 10; i++ { // 调用回调函数 f(i) } }
実践例
イベント処理:
Inイベント処理では、通常、コールバック関数は、特定のイベントが発生したときにアクションを実行するイベント リスナーのコールバック ハンドラーとして使用されます。例:
import ( "fmt" "github.com/go-vgo/robotgo" ) func main() { robotgo.EventHook(robotgo.KeyUp, func(e robotgo.Event) { fmt.Println("松开了一个按键:", e.Key) }) }
データ処理:
コールバック関数は、スライスやマップ内の各要素の処理などのデータ操作にも使用できます。例:
slice := []int{1, 2, 3, 4, 5} // 定义回调函数 cb := func(n int) { n++ } // 对切片中的每个元素应用回调函数 for i := range slice { cb(&slice[i]) } fmt.Println(slice) // 输出: [2 3 4 5 6]
インターフェイスの実装:
インターフェイスは、インターフェイス メソッドを実装する動作を提供するコールバック関数を通じて簡単に実装できます。例:
type MyInterface interface { DoSomething(func(int)) } type MyStruct struct{} func (s *MyStruct) DoSomething(cb func(int)) { for i := 0; i < 10; i++ { cb(i) } } func main() { s := &MyStruct{} s.DoSomething(func(i int) { fmt.Println(i) }) }
以上がgolang関数におけるコールバック関数の役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。