Detaillierte Erläuterung der benutzerdefinierten Funktionstypen in Golang

In Golang wird das Schlüsselwort „type“ zum Definieren eines benutzerdefinierten Typs verwendet, und eine Funktion ist auch ein Datentyp, sodass das Schlüsselwort „type“ zum Definieren eines Funktionstyps verwendet werden kann.

Definieren Sie die Syntax des Funktionstyps

Die Syntax zum Definieren eines Funktionstyps lautet wie folgt:

type FuncType func(argument_list) return_type

FuncType ist der definierte Funktionstypname, argument_list ist die Parameterliste der Funktion und return_type ist der Rückgabewerttyp der Funktion. Nachdem Sie einen Funktionstyp definiert haben, können Sie diesen Typ zum Deklarieren von Variablen, als Funktionsparameter oder Rückgabewerttypen usw. verwenden. Ein einfaches Beispiel ist wie folgt:

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

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

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

Ein Funktionstyp kann seine eigene Methode definieren. Im Folgenden wird eine Methode zum Ausführen der Funktion selbst definiert

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
}

Vollständiges Anwendungsbeispiel

Hier ist ein vollständiges Anwendungsbeispiel:

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("路多辛的所思所想")
}

Laufen Sie, um den Effekt zu sehen

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

Zuerst wird ein Funktionstyp namens MathFunc definiert, mit dem eine Funktion beschrieben wird, die zwei Parameter vom Typ int akzeptiert und einen Wert vom Typ int zurückgibt, eine Testmethode definiert und dann zwei spezifische Funktionen implementiert: add und sub. Eine Funktion ist an eine Funktionstypvariable f gebunden und f wird durch Übergabe verschiedener Parameter aufgerufen, um eine Addition oder Subtraktion durchzuführen.

wichtiger Punkt

Bei der Verwendung benutzerdefinierter Funktionstypen sind einige Dinge zu beachten:

  • Die Signatur des benutzerdefinierten Funktionstyps muss mit der Signatur der tatsächlichen Funktion übereinstimmen, andernfalls tritt ein Kompilierungsfehler auf.
  • Benutzerdefinierte Funktionstypen können wie andere Typen zugewiesen, Parameter übergeben usw. werden.
  • Ein benutzerdefinierter Funktionstyp kann als Funktionsparameter oder Rückgabewerttyp verwendet werden.

Zusammenfassung

In Golang sind Funktionen erstklassige Bürger, die als Funktionsparameter übergeben oder als Funktionsrückgabewerte zurückgegeben werden können. Durch die Verwendung eines benutzerdefinierten Funktionstyps kann die Verwendung von Funktionen flexibler gestaltet werden.

Acho que você gosta

Origin blog.csdn.net/luduoyuan/article/details/131406037
Recomendado
Clasificación