Créer des constructeurs dans Golang
-
Utilisez la fonction
init
pour créer des constructeurs dans Golang -
Utilisez la fonction
struct
pour 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