Sobes.tech
Junior — Middle

É possível expandir a funcionalidade dos pacotes padrão adicionando os meus próprios métodos?

sobes.tech IA

Resposta da IA

No Go, não é possível adicionar métodos diretamente aos tipos dos pacotes padrão se esses tipos estiverem definidos em outro pacote. No entanto, pode criar seus próprios tipos com base nos existentes (usando alias de tipos ou tipos novos) e adicionar métodos a esses novos tipos.

Exemplo:

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
}

Dessa forma, é possível estender a funcionalidade dos tipos padrão através de wrappers, mas não adicionando métodos diretamente aos tipos dos pacotes padrão.