¿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