package main
import (
"fmt"
)
type company struct {
companyName string
companyAddr string
}
type Person struct{
name string
age int
company // 匿名字段
}
func (pp Person) Testfunc(){
fmt.Println(pp.name)
fmt.Println(pp.age)
}
func (pp *Person)increaseAge(){
pp.age += 1
}
func main(){
//step 1
tom := Person{name: "tom", age: 18}
tom.Testfunc()
fmt.Println(tom.age)
//step 2
tom.increaseAge() //想要在方法内改变实例的属性的时候,必须使用指针做为方法的接收者。
fmt.Printf("增加后的年龄是:%d \n", tom.age)
//step3 类似继承
myComm := company{companyAddr: "shanghai", companyName: "mm"}
luke := Person{name: "luke", age: 20, company: myComm}
fmt.Printf("%s 在 %s工作 \n", luke.name, luke.company.companyName) //类似继承,与下面的效果是一样的
fmt.Printf("%s 在 %s工作 \n", luke.name, luke.companyName)
//step4. 在 Go 语言中,函数名的首字母大小写非常重要,它被来实现控制对方法的访问权限。
}
网友评论