Erstellen Konstruktoren in Golang

Jay Singh 23 August 2022
  1. Verwenden Sie die init Funktion um Konstruktoren in Golang zu erstellen
  2. Die Funktion struct zum Erstellen von Konstruktoren in Golang verwenden
Erstellen Konstruktoren in Golang

Go ist keine objektorientierte Sprache im gleichen Sinne wie Java. Konstruktoren sind kein Standardsprachfeature.

Bei der Entwicklung von Go-Programmen sollten Sie modulare Komponenten konstruieren, die nur schwach miteinander verbunden sind. Dieser Artikel befasst sich mit der Erstellung von Konstruktoren in Golang mit verschiedenen Funktionen.

Verwenden Sie die init Funktion um Konstruktoren in Golang zu erstellen

Es gibt keine Standardkonstruktoren in Go, aber Sie können Funktionen für jeden Typ definieren. In diesem Beispiel erstellen wir Konstruktoren mit der Funktion init.

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

Ausgabe:

Hello Boss!: 99

Die Funktion struct zum Erstellen von Konstruktoren in Golang verwenden

Wir geben den Namen und das Alter des Mitarbeiters mit der struct-Funktion dieses Beispiels an.

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

Ausgabe:

Jay Singh: 23

Ein weiteres Beispiel ist die Konstruktormethode newUser im Beispiel, die ein neues User struct erzeugt. Die Funktion gibt einen Zeiger auf die neu erstellte Struktur zurück.

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

Ausgabe:

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