Go 言語の関数型を使用すると、関数をパラメーターまたは戻り値として渡して、柔軟なコードを実現できます。これには以下が含まれます: 関数型宣言: func(*argTypes) returnType 関数をパラメータとして渡す: 関数型を他の関数のパラメータとして渡す、動作を渡す。関数タイプを戻り値として使用する: コードの柔軟性を高めるために関数タイプを返します。実際のケース: 並べ替え可能なインターフェイスを実装し、関数タイプを使用して並べ替え動作をカスタマイズします。
Go 言語では、関数タイプは、関数を他の関数の関数として使用できるようにする強力なツールです。関数のパラメータまたは戻り値。この柔軟性により、柔軟なモジュール式コードの作成が可能になります。
関数型の宣言は次の構文に従います:
func(*argTypes) returnType
Where:
*argTypes
は関数パラメータの型のタプルです。 returnType
は関数の戻り値の型で、他の関数型を含む任意の型を指定できます。 関数の型を引数として他の関数に渡すことができ、動作を引数として渡すことができます。例:
func apply(op func(int) int, nums []int) []int { result := make([]int, len(nums)) for i, n := range nums { result[i] = op(n) } return result }
apply
この関数は 2 つのパラメータを受け入れます:
op
: int を受け入れる関数の型
パラメータを指定し、int
値を返します。 nums
: int
型のスライス。 これは、各要素が nums
内の対応する要素に op
を適用した結果である新しいスライスを返します。
関数型は、他の関数の戻り値としても使用できます。これにより、関数から動作を返すことができるようになり、コードの柔軟性が向上します。例:
func getPredicate(n int) func(int) bool { return func(x int) bool { return x > n } }
getPredicate
この関数は、int
パラメータを受け入れ、ブール値を返す関数タイプを返します。渡された n
値は、値を返す関数の動作を決定するために使用されます。
並べ替え可能なインターフェイスの実装
関数型を使用して並べ替え可能なインターフェイスを実装する例を次に示します:
type Person struct { Name string Age int } type Sorter func([]Person) func (s Sorter) Sort(p []Person) { // Implement sorting logic. } func main() { people := []Person{ {"Alice", 20}, {"Bob", 25}, {"Charlie", 30}, } Sort(func(p []Person) { sort.Slice(p, func(i, j int) bool { return p[i].Name < p[j].Name }) })(people) }
この例では、Person
型は Sorter
インターフェイスを実装しており、このインターフェイスは Person
スライスを受け入れて並べ替えます。 Sort
関数は、引数として Sorter
型の関数を受け取り、people
スライスに対して並べ替え操作を実行します。
Go 言語の関数タイプは、柔軟なモジュール式コードの作成を可能にする強力なツールです。関数をパラメータおよび戻り値として渡すことにより、開発者はカスタム動作を作成し、コードを簡素化できます。
以上がgolang 関数タイプの幅広い用途の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。