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