Podría anular el comportamiento de la función integrada print() definiendo otro print() en el alcance, como en https://play.golang.org/p/Y2ly31oXU67

¿Es posible modificar el comportamiento sobre la marcha de una función importada, digamos fmt.Println()?

go
-2
struggling_learner 18 dic. 2019 a las 00:14

2 respuestas

La mejor respuesta

Importe un paquete diferente con el nombre "fmt" e implemente las funciones que necesite en ese paquete. Aquí hay un ejemplo:

Archivo go.mod:

module test

Archivo main.go

package main

import (
    "test/fmt"
)

func main() {
    fmt.Println("Hello, playground")
}

Archivo fmt / fmt.go:

package fmt

import (
    "fmt"
    "log"
)

func Println(format string, args ...interface{}) {
    msg := fmt.Sprintf(format, args...)
    log.Printf(msg)
}

Ejecútelo en el patio.

El código en esta respuesta no modifica la función importada como se pregunta en la pregunta.

1
Cerise Limón 18 dic. 2019 a las 00:03

Si desea 'alterar' una función incorporada, mire la muy buena utilidad de parche de mono https://github.com / bouk / monkey (y preste atención a las advertencias, solo es realmente útil en las funciones de prueba, y por mi parte rechazo cualquier código de producto que importe ese paquete)

2
Shane Howearth 17 dic. 2019 a las 21:22