Maison > développement back-end > Golang > Explication détaillée des structures et des méthodes en langage Go

Explication détaillée des structures et des méthodes en langage Go

Libérer: 2020-06-19 17:44:19
avant
3580 Les gens l'ont consulté

Explication détaillée des structures et des méthodes en langage Go

Les structures sont utilisées pour définir des structures de données complexes et stocker de nombreux attributs de champ identiques

1 Définition des structures et leur simplicité et leur praticité

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)
}
Copier après la connexion

Là. Il existe trois façons de définir une structure. Par exemple, le type Student ci-dessus est défini comme suit :

①var s1 Student Définir directement une variable de structure en mémoire

②s1 := new( Étudiant) Définissez un pointeur vers la structure en mémoire

③s1 := &Student{} Comme ci-dessus

Obtenez la valeur stockée de la manière suivante

①s1.name

②s1.name ou (*s1).name

③ Comme ci-dessus

2 Le "constructeur" dans struct. s'appelle C'est le mode usine, voir le 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)
}
Copier après la connexion

3. Précautions spécialement indiquées ! ! !

La structure est un type valeur et vous devez utiliser new pour allouer de la mémoire

4 Champs anonymes, regardez directement le code ci-dessous

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)
}
Copier après la connexion

méthode struct.

1. Définissez les méthodes dans struct et utilisez

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()
}
Copier après la connexion

2 La structure hérite de la structure, dans laquelle toutes les méthodes de la structure héritée sont absorbées par la structure héritée

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()
}
Copier après la connexion
Plus Pour des connaissances connexes, veuillez prêter attention à la colonne

tutoriel de langue go

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal