zoukankan      html  css  js  c++  java
  • Golang之继承,多重继承(struct)

    热乎的代码来了

    package main
    
    import "fmt"
    
    /*
    继承
    一个结构体嵌到另一个结构体,称作组合
    匿名和组合的区别
    如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承
    如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合
    如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承
    */
    
    type Car struct {
        weight int
        name   string
    }
    
    func (p *Car) Run() {
        fmt.Println("running")
    }
    
    type Bike struct {
        Car
        lunzi int
    }
    type Train struct {
        Car
    }
    
    func (p *Train) String() string {
        str := fmt.Sprintf("name=[%s] weight=[%d]", p.name, p.weight)
        return str
    }
    
    func main() {
        var a Bike
        a.weight = 100
        a.name = "bike"
        a.lunzi = 2
        fmt.Println(a)
        a.Run()
    
        var b Train
        b.weight = 100
        b.name = "train"
        b.Run()
        fmt.Printf("%s", &b)
    }

     练习2

    package main
    
    import (
        "fmt"
        "time"
    )
    
    type Car struct {
        Name string
        Age  int
    }
    
    func (c *Car) Set(name string, age int) {
        c.Name = name
        c.Age = age
    }
    
    type Car2 struct {
        Name string
    }
    
    //Go有匿名字段特性
    type Train struct {
        Car
        Car2
        createTime time.Time
        //count int   正常写法,Go的特性可以写成
        int
    }
    
    //给Train加方法,t指定接受变量的名字,变量可以叫this,t,p
    func (t *Train) Set(age int) {
        t.int = age
    }
    
    func main() {
        var train Train
        train.int = 300 //这里用的匿名字段写法,给Age赋值
        //(&train).Set(1000)
        train.Car.Set("huas", 100 )
        train.Car.Name = "test" //这里Name必须得指定结构体
        fmt.Println(train)
    
    }
  • 相关阅读:
    luogu P4852 yyf hates choukapai 单调队列优化dp
    luogu P2605 [ZJOI2010]基站选址 线段树优化dp
    7.9 NOI模拟赛 数列 交互 高精 字符串
    AGC 043 C
    7.9 NOI模拟赛 A.图 构造 dfs树 二分图
    7.9 NOI模拟赛 C.走路 背包 dp 特异性
    2020 高考记
    7.6 NOI模拟赛 灯 根号分治
    python-08-元组
    python-07-列表
  • 原文地址:https://www.cnblogs.com/pyyu/p/8259144.html
Copyright © 2011-2022 走看看