Sobes.tech
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.