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.