go语言:结构体与继承

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 语言中,函数名的首字母大小写非常重要,它被来实现控制对方法的访问权限。
    
}


你可能感兴趣的:(go语言:结构体与继承)