Crear constructores en Golang

Jay Singh 30 enero 2023
  1. Utilice la función init para crear constructores en Golang
  2. Use la función struct para crear constructores en Golang
Crear constructores en Golang

Go no es un lenguaje orientado a objetos en el mismo sentido que lo es Java. Los constructores no son una función de lenguaje estándar.

Al desarrollar programas Go, debe construir componentes modulares que estén débilmente vinculados entre sí. Este artículo abordará la creación de constructores en Golang usando diferentes funciones.

Utilice la función init para crear constructores en Golang

No hay constructores predeterminados en Go, pero puede definir funciones para cualquier tipo. Crearemos constructores usando la función init en este ejemplo.

package main

import "fmt"

type Thing struct {
    Name string
    Num  int
}

func (t *Thing) Init(name string, num int) {
    t.Name = name
    t.Num = num
}

func main() {
    t := new(Thing)
    t.Init("Hello Boss!", 99)
    fmt.Printf("%s: %d\n", t.Name, t.Num)
}

Producción :

Hello Boss!: 99

Use la función struct para crear constructores en Golang

Estamos declarando el nombre y la edad del empleado utilizando la función struct de este ejemplo.

package main

import "fmt"

type Employee struct {
    Name string
    Age  int
}

func (e *Employee) Init(name string, age int) {
    e.Name = name
    e.Age = age
}

func main() {
    emp := new(Employee)
    emp.Init("Jay Singh", 23)
    fmt.Printf("%s: %d\n", emp.Name, emp.Age)
}

Producción :

Jay Singh: 23

Otro ejemplo es el método constructor newUser del ejemplo, que produce una nueva struct de usuario. La función devuelve un puntero a la estructura recién creada.

package main

import "fmt"

type User struct {
    firstName string
    lastName  string
    email     string
}

func newUser(firstName string, lastName string, email string) *User {

    user := User{firstName, lastName, email}
    return &user
}

func main() {
    user := newUser("Jay", "Singh", "jayexamplesingh@gmail.com")

    fmt.Println("firstName:", user.firstName)
    fmt.Println("lastName:", user.lastName)
    fmt.Println("email:", user.email)
}

Producción :

firstName: Jay
lastName: Singh
email: jayexamplesingh@gmail.com