ホームページ  >  記事  >  バックエンド開発  >  Golang 関数は他の言語とどのように対話しますか?

Golang 関数は他の言語とどのように対話しますか?

WBOY
WBOYオリジナル
2024-04-12 09:09:011172ブラウズ

Go では、CGO および外部呼び出し (FFI) を介して他の言語と対話できます。 CGO は C コードの呼び出しに使用され、FFI は JavaScript、Python、およびその他の言語の関数の呼び出しに使用できます。たとえば、FFI を使用して Python 関数 sum_numbers を呼び出すと、それを JavaScript の Go コードで使用できるようになります。

Golang 関数は他の言語とどのように対話しますか?

#Go 関数は他の言語とどのように対話するのでしょうか?

Go は、Go コードを離れることなく他の言語で書かれた関数を使用できる強力なサポートを提供します。その方法は次のとおりです。

CGO を使用する

CGO を使用すると、C コードを呼び出すことができます。使用方法は次のとおりです。

// #include <stdio.h>
import "C"

func main() {
    C.printf("Hello, world!\n")
}

外部呼び出し (FFI) の使用

FFI を使用すると、JavaScript や Python などの他の言語の関数を呼び出すことができます。 FFI を使用して JavaScript 関数を呼び出す方法は次のとおりです:

package main

import (
    "github.com/gopherjs/gopherjs/js"
)

func main() {
    js.Global.Get("document").Get("getElementById").Invoke("myElement")
}

実際のケース: Python 関数の呼び出し

次の Python 関数があるとします:

def sum_numbers(a, b):
    return a + b

FFI を使用して Go でこの関数を呼び出すことができます:

package main

import (
    "github.com/gopherjs/gopherjs/js"
)

func main() {
    pyFunc := js.Global.Get("sum_numbers")
    result := pyFunc.Invoke(js.MakeWrapperType(1), js.MakeWrapperType(2))
    js.Global.Get("console").Call("log", result)
}

このコードを実行すると、JavaScript で Python 関数が呼び出され、結果が出力されます。

注:

FFI を使用するには、ターゲット言語の API についての正確な知識が必要です。 [github.com/gonum/cgo](https://github.com/gonum/cgo) など、FFI を容易にするために利用できるサードパーティ ライブラリもあります。

以上がGolang 関数は他の言語とどのように対話しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。