Sobes.tech
Junior — Middle

Javasolt-e a Receiver típusú objektumra mutató használata a jelenlegi kontextusban?

sobes.tech MI

Válasz az MI-től

Go-ban általában nincs szükség a Receiver típusú objektum pointerére, ha a metódus nem módosítja az objektum állapotát vagy az objektum kicsi.

Használjon pointert a Receiverhez, amikor:

  • A metóduson belül módosítani kell az objektum állapotát.
  • Az objektum nagy, és el akarja kerülni a másolást a metódus hívásakor.

Ha a metódus csak adatokat olvas, és az objektum kicsi, akkor használhat értéket (pointer nélkül).

Példa:

func (r *Receiver) UpdateValue(val int) {
    r.value = val // az állapot módosítása, pointer szükséges
}

func (r Receiver) PrintValue() {
    fmt.Println(r.value) // csak olvasás, pointer nélkül is lehet
}

Így a döntés attól függ, hogy módosítani kell-e az objektumot, és mekkora az.