Junior — Middle
Ar galima išplėsti standartinių paketų funkcionalumą pridėjus savo metodus?
sobes.tech AI
Atsakymas iš AI
Go kalboje nėra galimybės tiesiogiai pridėti metodų prie standartinių paketų tipų, jei šie tipai apibrėžti kitame pakete. Tačiau galima kurti savo tipus, pagrįstus esamais (naudojant type alias arba naują tipą) ir pridėti metodus prie naujų tipų.
Pavyzdys:
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
}
Taip galima išplėsti standartinių tipų funkcionalumą naudojant wrappers, bet ne tiesiogiai pridedant metodus prie standartinių paketų tipų.