Home  >  Article  >  Backend Development  >  Detailed explanation of structures and methods in go language

Detailed explanation of structures and methods in go language

尚
forward
2020-06-19 17:44:193430browse

Detailed explanation of structures and methods in go language

Structures are used to define complex data structures and store many identical field attributes

1, structure definition and simple and practical

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

There are three ways to define a structure. For example, the Student type above is defined as follows

①var s1 Student Directly define a structure variable in memory

②s1 := new( Student) Define a pointer to the structure in memory

③s1 := &Student{} Same as above

Get the stored value in the following way

①s1.name

②s1.name or (*s1).name

③ Same as above

2. The "constructor" in struct is called It is factory mode, see 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, specially stated precautions! ! !

The structure is a value type, and you need to use new to allocate memory

4. Anonymous fields, look directly at the following code

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

struct method

1. Define methods in struct and use

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

2. Structure inherits structure, in which all methods of the inherited structure are absorbed by the inherited structure

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

More For related knowledge, please pay attention to the go language tutorial column

The above is the detailed content of Detailed explanation of structures and methods in go language. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete
Previous article:Can Golang be decompiled?Next article:Can Golang be decompiled?