Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Strukturen und Methoden in der Go-Sprache

Detaillierte Erläuterung der Strukturen und Methoden in der Go-Sprache

尚
nach vorne
2020-06-19 17:44:193429Durchsuche

Detaillierte Erläuterung der Strukturen und Methoden in der Go-Sprache

Strukturen werden verwendet, um komplexe Datenstrukturen zu definieren und viele identische Feldattribute zu speichern

1 Definition von Strukturen und ihre Einfachheit und Praktikabilität

package main

import (
    "fmt"
)

func main() {
    type Student struct { //定义结构体
        name string
        age  int
    }
    s1 := new(Student) // 定义指向结构体的指针
    s1.name = "xiaomu"
    s1.age = 10
    fmt.Printf("name:%s\nage:%d\n", s1.name, s1.age)
}

Dort Es gibt drei Möglichkeiten, eine Struktur zu definieren. Der obige Student-Typ ist beispielsweise wie folgt definiert:

①var s1 Student Definieren Sie direkt eine Strukturvariable im Speicher

②s1 := new( Student) Definieren Sie einen Zeiger auf die Struktur im Speicher

③s1 := &Student{} Gleiches wie oben

Erhalten Sie den gespeicherten Wert auf folgende Weise

①s1.name

②s1.name oder (*s1).name

③ Wie oben

2. Der „Konstruktor“ in struct heißt Es handelt sich um den Werksmodus, siehe Code

package main

import (
    "fmt"
)

type Student struct { //声明结构体
    Name string
    Age  int
}

func NewStudent(name string, age int) *Student { // 返回值指向Student结构体的指针
    return &Student{
        Name: name,
        Age:  age,
    }
}

func main() {
    s1 := NewStudent("xiaomu", 123) // 声明并且赋值指向Student结构体的指针
    fmt.Printf("name: %s\nage: %d", s1.Name, s1.Age)
}

3. Besondere Vorsichtsmaßnahmen! ! !

Die Struktur ist ein Werttyp und Sie müssen new verwenden, um Speicher zuzuweisen

4. Anonyme Felder, schauen Sie sich direkt den Code unten an

package main

import (
    "fmt"
)

func main() {
    type Class struct {
        ClassName string
    }
    type Student struct { //定义结构体
        name  string
        age   int
        Class // 定义匿名字段,继承了该结构体的所有字段
    }
    s1 := new(Student) // 定义指向结构体的指针
    s1.ClassName = "xiaomu"
    fmt.Printf("ClassName:%s\n", s1.ClassName)
}

Strukturmethode

1. Methoden in struct definieren und

package main

import (
    "fmt"
)

type Student struct { //定义结构体
    name string
    age  int
}

func (stu *Student) OutName() { // 定义Student方法
    fmt.Println(stu.name)
}

func main() {
    s1 := new(Student) // 定义指向结构体的指针
    s1.name = "xaiomu"
    s1.OutName()
}

Struktur erbt Struktur, in der alle Methoden der geerbten Struktur von der geerbten Struktur übernommen werden

package main

import (
    "fmt"
)

type ClassName struct {
    className string
}

func (cla *ClassName) OutClassName() {
    fmt.Println(cla.className)
}

type Student struct { //定义结构体
    name      string
    age       int
    ClassName // 继承ClassName结构体的所有
}

func (stu *Student) OutName() { // 定义Student方法
    fmt.Println(stu.name)
}

func main() {
    s1 := new(Student) // 定义指向结构体的指针
    s1.className = "xiaomu"
    s1.OutClassName()
}

Mehr für entsprechendes Wissen beachten Sie bitte die Spalte Go-Sprach-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Strukturen und Methoden in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen