Junior — Middle
Vai ir iespējams paplašināt standarta paketu funkcionalitāti, pievienojot savus metodes?
sobes.tech AI
Atbilde no AI
Go valodā nav iespējams tieši pievienot metodes standarta pakotņu tipiem, ja šie tipi ir definēti citā paketē. Tomēr jūs varat izveidot savus tipus, balstoties uz esošajiem (izmantojot type alias vai jaunu tipu) un pievienot metodes šiem jauniem tipiem.
Piemērs:
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
}
Tādējādi, standarta tipu funkcionalitāti var paplašināt ar wrappers, bet ne tieši pievienojot metodes standarta pakotņu tipiem.