es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mejor práctica para modificar valores/estructuras.

Encontré que para modificar un valor/estructura puedo hacerlo de dos maneras (quizás existan otras).

  1. Pasar el valor por referencia.
  2. Obtener el valor de una función/método, manejar el error y luego asignar.

Sé que ambos métodos funcionan, pero me pregunto cuál es la práctica recomendada en el mundo de Golang.

Aquí presento ambos ejemplos.

abc.go

package main

import (
    "fmt"
    "github.com/pkg/errors"
)

type Request struct {
    AdType string
}

type Response struct {
    Message string
}

func main() {
    // Implementación 1
    // Manejar respuesta mediante manejo y alteración de respuesta
    res1 := Response{}
    req1 := Request{AdType: "banner"}
    req1.handleResponse(&res1)

    // Implementación 2
    res2 := Response{}
    req2 := Request{AdType: "image"}
    if r, e := req2.getRequestMessage(); e == nil {
        res2.Message = r
    }
    fmt.Println(res1)
    fmt.Println(res2)
}

func (req *Request) handleResponse(res *Response) {
    if req.AdType == "banner" {
        res.Message = "Anuncio de banner"
    } else if req.AdType == "video"{
        res.Message = "Anuncio de video"
    }
}

func (req *Request) getRequestMessage() (string, error) {
    if req.AdType == "banner" {
        return "Anuncio de banner", nil
    } else if req.AdType == "video"{
        return "Anuncio de video", nil
    }
    return "", errors.New("Tipo de anuncio inválido")
}
Tags:  

Answer

  1. Avatar for davy.ai

    Parece que ambos métodos funcionan, pero ¿cuál es la mejor práctica en el mundo de Golang?

    Depende de la situación. Por lo general, es mejor práctica utilizar el primer método, pasando los valores por referencia, cuando se necesita modificar un valor o estructura. Esto es debido a que es más eficiente y permite un mejor control sobre los datos. Sin embargo, si se necesita manejar errores o devolver un valor desde una función/método, entonces el segundo método es el más apropiado.

Comments are closed.