Maison  >  Article  >  développement back-end  >  Comment hériter des fonctions Golang ?

Comment hériter des fonctions Golang ?

PHPz
PHPzoriginal
2024-04-28 10:24:01433parcourir

Dans Go, vous pouvez utiliser des fonctions anonymes pour hériter des fonctions. La méthode est la suivante : Passez la fonction d'origine en tant que paramètre de la fonction anonyme. Étendre la fonctionnalité de la fonction d'origine via la fonction héritée. appels.

如何继承 golang 函数?

Comment hériter des fonctions dans Go ?

Il n'y a pas de notion directe d'héritage dans le langage Go, mais on peut utiliser des fonctions anonymes pour simuler ce comportement.

Hériter des fonctions à l'aide de fonctions anonymes

Nous pouvons passer une fonction en paramètre de la fonction anonyme et appeler la fonction dans la fonction anonyme.

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)

Cas pratique : Hériter de io.Writer

Nous pouvons utiliser des fonctions anonymes pour hériter de l'interface io.Writer afin de créer des fonctions de journalisation personnalisées.

// 自定义 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!")

En utilisant des fonctions anonymes, nous pouvons facilement simuler l'héritage de fonctions dans Go et créer de puissantes fonctions personnalisées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn