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


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容