go语言结构体、接口
struct 的声明
type 标识符 struct {
field type
field type
}
例子: type Student struct {
Name string
Age int
Score int
}
struct 字段访问
var stu Student
stu.Name = "jonathan"
stu.Age = 18
stu.Score = 99
fmt.printf("name=%s,age=%d,score=%d",stu.Name,stu.Age,stu.Score)
struct定义
var stu Student
var stu *Student = new(Student) #使用new关键字来分配内存,注意返回的是一个指针
var stu *Student = &Student{} #与第一种方式一样 ; 返回结构体的指针
结构体指针的访问形式:
eg: *stu.Name #go中自动简化了 直接用stu.Name访问即可
struct 的内存布局
struct 的所有字段再内存中是连续的,布局如下:
接口的定义
注意接口类型中不能存在变量
type example interface {
method1 (参数列表) 返回值列表
method2 (参数列表) 返回值列表
}
如一个接口没有实现任何的方法,那么我们把它叫做空接口(任何类型都实现了空接口)
下面代码中接口a为空,所以b实现了a,b可以给a赋值。
package main
type Test interface{
}
func main() {
var a interface{}
var b int
a =b
}