由于Go语言不是面向对象编程语言,是一个面向接口的变成语言,所以他本身不想java那样有多态继承等关系,在Go语言中通过struct来实现面向对象的。(struct YYDS!)
类型名:标识自定义结构体的名称,在同一个包内不能重复。
字段名:表示结构体字段名。结构体中的字段名必须唯一。
字段类型:表示结构体字段的具体类型。
很简单的例子:
type Person struct{ name string address string age int sex string }自定义一个Person类型,他有name,address,age,sex四个字段分别代表个自内容。如果我要使用Person中某一个字段,我可以直接调用Person就行了。
结构体实例化结构体实例化后才可以分配内存使用(实例化后才可以使用自定义类型)
由于结构体本身就是一共类型,所以在声明的时候可以像声明变量一样声明结构体
var 结构体实例 结构体类型example:
package main import "fmt" type Person struct { name string age int } func main() { var p1 Person //通过.来访问结构体的字段(成员变量),例如p1.name和p1.age等。 p1.name = "A2rcher" p1.age = 20 fmt.Println(p1) } 匿名结构体匿名结构体是用来处理一些临时的数据,比如说我现在A,B两个函数,但是我临时需要使用c数据,这个时候可以用到匿名结构体。
package main import "fmt" type Person struct { name string age int } func main() { var p1 Person p1.name = "A2rcher" p1.age = 20 var user struct { Name string `json:"name"` Age int `json:"age"` } user.Age = 30 user.Name = "emo" fmt.Println(p1) fmt.Println(user) } 指针类型结构体指针类型结构体是绝大部分情况下用到的,可以通过new关键字对结构体进行实例化得到结构体的地址。(new跟make的区别以及使用的场景参考函数中的内置函数以及指针部分)
方法和接收者 接口 并发