
结构体用来定义复杂的数据结构,存储很多相同的字段属性
1、结构体的定义以及简单实用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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)
}
|
Salin selepas log masuk
结构体定义的三种方式,例如上面的Student类型,有如下方式定义
①var s1 Student 在内存中直接定义一个结构体变量
②s1 := new(Student) 在内存中定义一个指向结构体的指针
③s1 := &Student{} 同上
通过以下方式获取存储的值
①s1.name
②s1.name或者(*s1).name
③同上
2、struct中的“构造函数”,称之为工厂模式,见代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package main
import (
"fmt"
)
type Student struct {
Name string
Age int
}
func NewStudent(name string, age int) *Student {
return &Student{
Name: name,
Age: age,
}
}
func main() {
s1 := NewStudent( "xiaomu" , 123)
fmt.Printf( "name: %s\nage: %d" , s1.Name, s1.Age)
}
|
Salin selepas log masuk
3、特意声明注意事项!!!
结构体是值类型,需要使用new分配内存
4、匿名字段,直接看下面代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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)
}
|
Salin selepas log masuk
struct的方法
1、在struct中定义方法并且使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package main
import (
"fmt"
)
type Student struct {
name string
age int
}
func (stu *Student) OutName() {
fmt.Println(stu.name)
}
func main() {
s1 := new (Student)
s1.name = "xaiomu"
s1.OutName()
}
|
Salin selepas log masuk
2、结构体继承结构体,其中被继承结构体的方法全部为继承结构体吸收
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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
}
func (stu *Student) OutName() {
fmt.Println(stu.name)
}
func main() {
s1 := new (Student)
s1.className = "xiaomu"
s1.OutClassName()
}
|
Salin selepas log masuk
更多相关知识请关注go语言教程栏目
Atas ialah kandungan terperinci go语言中的结构体与方法详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!