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

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

Freigeben: 2020-06-19 17:44:19
nach vorne
3580 Leute haben es durchsucht

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)
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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()
}
Nach dem Login kopieren

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()
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage