¿Existe una opinión "idiomática" sobre el uso de una función versus un método para realizar una operación en un objeto en marcha

CorePress2024-01-25  12

Hay dos formas de lograr modificar un objeto (bueno, valor) en Golang:

type Node struct {
    Name    string
}

// First way
func SetName(node *Node) {
    node.Name = "something else"
}

// Second Way
func (node *Node) SetName() {
    node.Name = "something else"
}

¿Se basa esto puramente en semántica/opinión o hay alguna razón por la que uno es mejor que el otro (más "idiomático")? ¿O quizás ambos sean válidos en diferentes casos de uso?



------------------------------------

Cuando defines un método para el tipo Nodo, ese tipo ahora implementa la interfaz { SetName() }. Esto no sucede si defines una función.

Si esto es importante, utilice un método. Si no, puedes usar cualquiera de los dos.



------------------------------------

Además de las implicaciones de la interfaz mencionadas por Burak, haría la siguiente pregunta:

¿El comportamiento SetName() es característico de la identidad del tipo de Nodo? En otras palabras, ¿agregar esto como método a la lista de métodos del tipo mejora el significado del tipo, o simplemente está saturando la lista de métodos con un procedimiento que actúa sobre este tipo?

2

Así que mi caso de uso real fue cadaEl nodo tiene un cliente que se conecta a su propia base de datos. Lo que no me gusta es que tengo un método "writeToDatabase" para mi tipo de nodo, eso escribe datos. Algo en esto se siente mal. Casi como si el nodo no debería ser responsable de esto, sino algo así como una función de utilidades que toma una interfaz con un método de escritura. No estoy seguro de si eso tiene sentido o no.

- Adam Johnston

27/03/2021 a las 21:59

@AdamJohnston, si te entiendo, es posible que desees un patrón en el que tengas tipos como Nodo que tengan un método para devolver un objeto de datos que sea destino.creado para una base de datos y luego una función de utilidad que toma uno (o más) de estos objetos, lee los objetos de datos de ellos y luego los escribe en la base de datos.

-Himnos para discoteca

27/03/2021 a las 22:05

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare