golang インターフェースで非同期コールバックを行うメソッド

Go言語では、Goroutineとチャネルを使って非同期コールバックを実装できます。

初めに、インターフェース型を定義し、インターフェース内でコールバックメソッドを宣言します。例えば:

type Callback interface {
OnCallback(result string)
}

次に、構造体型を定義し、インターフェイス内のコールバックメソッドを実装します。

type CallbackImpl struct {}
func (c *CallbackImpl) OnCallback(result string) {
fmt.Println("Callback result:", result)
}

続いて、ある時点にコールバックメソッドを呼び出す、インターフェースインスタンスを引数としてとる関数を作成します。

func DoSomething(callback Callback) {
// 执行一些操作
// ...
// 调用回调方法
callback.OnCallback("done")
}

関数の呼び出しポイントでインターフェイスインスタンスを作り、コールバックメソッドを実装した構造体ポインタ関数を渡せばよい。

callback := &CallbackImpl{}
go DoSomething(callback)

上記のコードでは、goキーワードを使用して新しいGoroutineを作成し、DoSomething関数を新たな並列スレッドで実行しています。これにより、DoSomething関数内のコールバックメソッドの呼び出し実行時に、コールバック処理が非同期的に実行されるようになります。

コールバック関数が戻り値を返す必要がある場合は、チャンネルを使用して実装することができます。コールバックメソッドの定義にチャネルパラメータを追加し、コールバック時にチャンネルに結果を送信します。その後、呼び出し元でチャンネルから戻り値を読み取ることができます。

結局、Go言語ではGoroutineとチャネルを使うことで非同期コールバックを実現できます。

bannerAds