Sobes.tech
Junior — Middle

Bővíthetőek-e az alapcsomagok funkciói saját módszerek hozzáadásával?

sobes.tech MI

Válasz az MI-től

A Go nyelvben nem lehet közvetlenül módszereket hozzáadni a standard csomagok típusaihoz, ha ezek a típusok más csomagban vannak definiálva. Azonban saját típusokat hozhatunk létre a meglévők alapján (type alias vagy új típus segítségével), és hozzáadhatunk módszereket az új típusokhoz.

Példa:

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
}

Így a standard típusok funkcionalitását wrapper-ek segítségével lehet bővíteni, de nem lehet közvetlenül módszereket hozzáadni a standard csomagok típusaihoz.