Junior — Middle
¿Se puede ampliar la funcionalidad de los paquetes estándar agregándoles mis propios métodos?
sobes.tech AI
Respuesta de la IA
En Go, no se pueden agregar directamente métodos a los tipos de los paquetes estándar si estos tipos están definidos en otro paquete. Sin embargo, se pueden crear sus propios tipos basados en los existentes (a través de alias de tipos o tipos nuevos) y agregar métodos a estos nuevos tipos.
Ejemplo:
package main
import (
"fmt"
"strings"
)
type MyString string
func (s MyString) Reverse() string {
runes := []rune(string(s))
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func main() {
var s MyString = "hello"
fmt.Println(s.Reverse()) // olleh
}
De esta manera, se puede ampliar la funcionalidad de los tipos estándar mediante envoltorios, pero no agregando métodos directamente a los tipos de los paquetes estándar.