English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang Grund教程

Golang Steuerausdrücke

Golang Funktion & Methode

Golang Struktur

Golang Schnittmenge & Array

Golang Zeichenkette (String)

Golang Zeiger

Golang Schnittstelle

Golang Konkurrenz

Golang Ausnahme (Error)

Golang andere Artikel

Go Sprache Struktur (struct)

Ein Struktur (struct) in Golang ist ein vom Benutzer definiertes Typ, das das Gruppieren von möglicherweise verschiedenen Typen ermöglicht/kombiniert zu einem einzelnen Typ. Jedes Objekt in der realen Welt, das eine Gruppe von Attributen hat/Die physischen Entitäten der Felder können als Struktur dargestellt werden. Dieser Begriff wird oft mit der Klasse in der objektorientierten Programmierung verglichen. Es kann als ein leichter Klassen-Typ bezeichnet werden, der keine Vererbung unterstützt, aber Kombinationen unterstützt.

Zum Beispiel hat eine Adresse die Attribute name, street, city, state und Pincode. Wie folgt können diese drei Attribute zu einer Struktur kombiniert werdenAdressehat einen Sinn.

Strukturdeklaration:

 type Adresse struct {
      name string 
      street string
      city string
      state string
      Pincode int
}

Dort,typeEin Schlüsselwort führt zu einer neuen Typdefinition. Danach folgt der Name des Typs (Adresse) und dem SchlüsselwortstructUm zu erläutern, dass wir eine Struktur definieren. Diese Struktur enthält eine Liste der Felder innerhalb der eckigen Klammern. Jedes Feld hat einen Namen und einen Typ.

注意:我们还可以通过组合相同类型的各个字段来使它们紧凑,如下例所示:

type Adresse struct {
    name, street, city, state string
    Pincode int
}

定义结构:声明结构的语法:

var a Adresse

上面的代码创建一个Adresse-Typ的变量,默认情况下将其设置为零。对于结构,零表示所有字段均设置为其对应的零值。因此,字段name,street,city,state都设置为“”,而Pincode设置为0。

您还可以使用结构字面量来初始化结构类型的变量,如下所示:

var a = Adresse{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}

注意:

始终以在结构中声明它们的顺序传递字段值。同样,您不能仅使用上述语法初始化字段的子集。

Go还支持名称:value语法,用于初始化结构(使用此语法时字段的顺序无关紧要)。而且,这仅允许您初始化字段的子集。所有未初始化的字段均设置为其相应的零值。

例如:

var a = Adresse{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}
package main 
  
import "fmt"
  
//定义结构类型
type Adresse struct { 
    Name    string 
    city    string 
    Pincode int
} 
  
func main() { 
  
        //声明一个“struct”类型的变量
        //初始化所有struct字段
        //其值为零
    var a Adresse  
    fmt.Println(a) 
  
        //声明和初始化
        // struct使用结构文字
    a1 := Adresse{"Akshay", "Dehradun",} 3623572} 
  
    fmt.Println("Adresse1: ", a1) 
  
        //在命名字段时
        //初始化一个结构
    a2 := Adresse{Name: "Anikaa", city: "Ballia",Pincode: 277001} 
  
    fmt.Println("Adresse2: ", a2) 
  
        //未初始化的字段设置为
        //它们对应的零值
    a3 := Adresse{Name: "Delhi"} 
    fmt.Println("Adresse3: ", a3) 
}

输出:

{  0}
Adresse1:  {Akshay Dehradun} 3623572}
Adresse2:  {Anikaa Ballia} 277001}
Adresse3:  {Delhi  0}

如何访问结构的字段?

要访问结构的各个字段,您必须使用点(.)运算符。

package main 
  
import "fmt"
  
//定义结构体 
type Car struct { 
    Name, Model, Color string 
    WeightInKg float64 
} 
  
func main() { 
    c := Car{Name: "Ferrari", Model: "GTC4, Color: "Red", WeightInKg: 1920} 
  
        //访问结构字段
        //使用点运算符
    fmt.Println("Car Name: ", c.Name) 
    fmt.Println("Car Color: ", c.Color) 
        //赋新值
        //指向一个结构字段
    c.Color = "Black"
      
    //显示结果
    fmt.Println("Car: ", c) 
}

输出:

Car Name: {Ferrari
Car Color: {Red
Car: {Ferrari GTC4 Black 1920}

指向结构的指针

Golang中的指针是一个变量,用于存储另一个变量的内存地址。您还可以创建一个指向结构的指针,如以下示例所示:

// 指向结构体的指针
package main 
  
import "fmt"
  
// 定义一个结构
type Employee struct { 
    firstName, lastName string 
    age, salary int
} 
  
func main() { 
  
        //传递struct变量的地址
        // emp8
    emp8 := &Employee{ "Sam", "Anderson", 55, 6000} 
  
        //* emp8,
        // emp8结构的firstName字段
    fmt.Println("First Name:", (*emp8).firstName) 
    fmt.Println("Age:", (*emp8).age) 
}

输出:

First Name: Sam
Alter: 55

Golang为我们提供了使用emp8.firstName而不是显式解引用(* emp8).firstName来访问firstName字段的选项。显示此示例如下:

//指向结构的指针
package main 
  
import "fmt"
  
//定义一个结构
type Employee struct { 
    firstName, lastName string 
    age, salary int
} 
  
func main() { 
  
    //获取指向结构体的指针
    emp8 := &Employee{ "Sam", "Anderson", 55, 6000} 
  
        // emp8用于访问
        //字段firstName
    fmt.Println("First Name: ", emp8.firstName) 
    fmt.Println("Age: ", emp8.age) 
}

输出:

First Name:
Alter:  55