“面向对象“编程

50 阅读1分钟

结构体定义

type Employee struct {
    Id   string
    Name string
    Age  int
}

实例化及初始化

e := Employee{"0", "Bob", 20}
e1 := Employee{Name: "Mike", Age: 30}
e2 := new(Employee) // 注意这里返回的引用/指针,相当于 e:= &Employee{}
e2.Id = "30" // 与其他主流编程语言的差异:通过实例的指针访问成员不需要使用->
e2.Age = 33
e2.Name = "Rose"

行为(方法)定义

type Employee struct {
    Id   string
    Name string
    Age  int
}
// 第一种定义方式在实例对应方法被调用时,实例的成员会进行值复制
func (e Employee) String() string {
    return fmt.Sprintf("ID:%s-Name:%s-Age:%d", e.Id, e.Name, e.Age)
}

// 通常情况下为了避免内存拷贝我们使用第二种方式
func (e *Employee) String() string {
    return fmt.Sprintf("ID:%s-Name:%s-Age:%d", e.Id, e.Name, e.Age)
}