Avatar ·

¿Cómo agregar nuevos métodos a un tipo existente en Go? (por ejemplo, a int o string)

¡Hola a todos! Acabo de empezar a aprender Go después de Python y C#, y tengo un problema con la extensión de la funcionalidad de los tipos incorporados. En Python solía hacer esto: ```python # Python - monkey patching class MyInt(int): def is_even(self): return self % 2 == 0 print(MyInt(4).is_even()) # True ``` En C# existen los extension methods: ```csharp // C# Extension Method public static class IntExtensions { public static bool IsEven(this int value) { return value % 2 == 0; } } ``` Ahora estoy intentando hacer lo mismo en Go. Quiero agregar un método `IsEven()` al tipo `int` para verificar si un número es par. Esto es lo que pruebo: ```go package main import "fmt" // Intento extender int func (i int) IsEven() bool { return i%2 == 0 } func main() { x := 4 fmt.Println(x.IsEven()) } ``` El compilador da el error: "cannot define new methods on non-local type int". Entiendo que Go es más estricto con los tipos, pero entonces ¿cómo