In Go können Sie anonyme Funktionen verwenden, um Funktionen zu erben. Die Methode lautet wie folgt: Übergeben Sie die ursprüngliche Funktion als Parameter der anonymen Funktion. Erweitern Sie die Funktionalität der ursprünglichen Funktion Anrufe.
Wie erbt man Funktionen in Go?
In der Go-Sprache gibt es kein direktes Konzept der Vererbung, aber wir können anonyme Funktionen verwenden, um dieses Verhalten zu simulieren.
Funktionen mithilfe anonymer Funktionen erben
Wir können eine Funktion als Parameter der anonymen Funktion übergeben und die Funktion in der anonymen Funktion aufrufen.
func greet(name string) { fmt.Printf("Hello, %s!\n", name) } // 继承 greet 函数,并在其基础上添加额外的功能 inheritedGreet := func(name string, numTimes int) { greet(name) for i := 0; i < numTimes-1; i++ { fmt.Printf("Hello again, %s!\n", name) } } // 调用继承的函数 inheritedGreet("Alice", 3)
Praktischer Fall: io.Writer erben
Wir können anonyme Funktionen verwenden, um die io.Writer
-Schnittstelle zu erben und benutzerdefinierte Protokollierungsfunktionen zu erstellen.
// 自定义 Writer,它会在写入数据之前为每一行添加时间戳 type TimestampedWriter struct { w io.Writer } // 继承 io.Writer.Write 方法 func (w *TimestampedWriter) Write(p []byte) (n int, err error) { // 调用 io.Writer.Write 方法,将其作为匿名函数的参数传递 n, err = w.w.Write(append([]byte(time.Now().Format("2006-01-02T15:04:05")), p...)) return } // 创建一个自定义 Writer writer := TimestampedWriter{w: os.Stdout} // 使用自定义 Writer fmt.Fprintln(writer, "Hello, world!")
Durch die Verwendung anonymer Funktionen können wir die Funktionsvererbung in Go einfach simulieren und leistungsstarke benutzerdefinierte Funktionen erstellen.
Das obige ist der detaillierte Inhalt vonWie erbt man Golang-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!