Golang のカスタム関数タイプの詳細な説明

Golang では、type キーワードを使用してカスタム型を定義し、関数もデータ型であるため、type キーワードを使用して関数型を定義できます。

関数型の構文を定義する

関数タイプを定義するための構文は次のとおりです。

type FuncType func(argument_list) return_type

FuncType は定義された関数の型名、argument_list は関数のパラメータ リスト、return_type は関数の戻り値の型です。関数の型を定義した後、この型を使用して変数を関数のパラメーターや戻り値の型などとして宣言できます。簡単な例は次のとおりです。

type MathFunc func(int, int) int   // 定义函数类型

func add(x, y int) int {           // 定义加法函数
    return x + y
}

func sub(x, y int) int {           // 定义减法函数
    return x - y
}

関数タイプは独自のメソッドを定義できます。以下は関数自体を実行するメソッドを定義します

type MathFunc func(int, int) int   // 定义函数类型

func (f *MathFunc) run(str string)  {	// MathFunc 提供的方法
	fmt.Println(str)
}

func add(x, y int) int {           // 定义加法函数
    return x + y
}

func sub(x, y int) int {           // 定义减法函数
    return x - y
}

完全な使用例

完全な使用例は次のとおりです。

package main

import "fmt"

type MathFunc func(int, int) int   // 定义函数类型

func (f *MathFunc) test(str string) { // MathFunc 提供的方法
	fmt.Println(str)
}

func add(x, y int) int {           // 定义加法函数
    return x + y
}

func sub(x, y int) int {           // 定义减法函数
    return x - y
}

func main() {
    var f MathFunc      // 声明函数类型变量
    f = add             // 函数类型变量赋值为加法函数
    fmt.Println(f(1, 2))// 给加法函数传参并打印返回值
  	f.test("路多辛的博客")
    f = sub             // 函数类型变量赋值为减法函数
    fmt.Println(f(3, 2))// 给减法函数传参并打印返回值
  	f.test("路多辛的所思所想")
}

実行して効果を確認してください

$ go run main.go
3
路多辛的博客
1
路多辛的所思所想

まず、MathFunc という名前の関数型が定義されており、これは 2 つの int 型パラメータを受け入れて int 型の値を返す関数の記述に使用され、テスト メソッドを定義してから、add と sub という 2 つの特定の関数を実装します。は関数型変数 f にバインドされており、加算または減算を実行するためにさまざまなパラメーターを渡すことによって f が呼び出されます。

注意点

カスタム関数タイプを使用する場合は、次の点に留意する必要があります。

  • カスタム関数タイプのシグネチャは、実際の関数のシグネチャと一致している必要があります。そうでない場合、コンパイル エラーが発生します。
  • カスタム関数タイプは、他のタイプと同様に、割り当てたり、パラメータを渡したりすることができます。
  • カスタム関数タイプは、関数パラメータまたは戻り値のタイプとして使用できます。

まとめ

Golang では、関数は関数パラメータとして渡したり、関数の戻り値として返すことができる第一級市民です。カスタム関数タイプを使用すると、関数をより柔軟に使用できます。

おすすめ

転載: blog.csdn.net/luduoyuan/article/details/131406037