Sobes.tech
Junior — Middle

Lehetséges-e egy másik csomag funkcionalitását bővíteni új módszerek hozzáadásával a Go nyelvben?

sobes.tech MI

Válasz az MI-től

A Go nyelvben nem lehet új módszereket hozzáadni egy másik csomagban definiált típusokhoz, ha ezek a típusok nincsenek a saját csomagodban deklarálva. A módszereket csak ugyanabban a csomagban definiált típusokra lehet deklarálni. Ez a korlátozás a nyelv tervezéséből ered, és segít elkerülni a konfliktusokat és a kiszámíthatatlan viselkedést.

Azonban használhatunk kompozíciót vagy új típusokat, amelyek egy másik csomag típusát tartalmazzák, és saját módszereket adnak hozzá:

package mypkg

import "otherpkg"

type MyType struct {
    otherpkg.ExternalType
}

func (m MyType) NewMethod() {
    // kiegészítő funkcionalitás
}

Így a funkcionalitás bővítése wrappereken keresztül lehetséges, de nem közvetlenül a másik csomag típusaihoz hozzáadott módszerekkel.