Créer des constructeurs dans Golang

Jay Singh 30 janvier 2023
  1. Utilisez la fonction init pour créer des constructeurs dans Golang
  2. Utilisez la fonction struct pour créer des constructeurs dans Golang
Créer des constructeurs dans Golang

Go n’est pas un langage orienté objet au même sens que Java. Les constructeurs ne sont pas une fonctionnalité de langage standard.

Lors du développement de programmes Go, vous devez construire des composants modulaires qui ne sont que faiblement liés les uns aux autres. Cet article abordera la création de constructeurs dans Golang en utilisant différentes fonctions.

Utilisez la fonction init pour créer des constructeurs dans Golang

Il n’y a pas de constructeurs par défaut dans Go, mais vous pouvez définir des fonctions pour n’importe quel type. Nous allons créer des constructeurs en utilisant la fonction init dans cet exemple.

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)
}

Production:

Hello Boss!: 99

Utilisez la fonction struct pour créer des constructeurs dans Golang

Nous déclarons le nom et l’âge de l’employé en utilisant la fonction struct de cet exemple.

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)
}

Production:

Jay Singh: 23

Un autre exemple est la méthode constructeur newUser dans l’exemple, qui produit une nouvelle struct User. La fonction renvoie un pointeur vers la structure nouvellement créée.

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)
}

Production:

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