V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aeshfawre
V2EX  ›  程序员

go 语言的一个小问题。

  •  
  •   aeshfawre · 2017-09-28 14:37:47 +08:00 · 1464 次点击
    这是一个创建于 2592 天前的主题,其中的信息可能已经有所发展或是发生改变。
    package main

    import (
    "fmt"
    )
    type DoInter interface{
    do()
    }
    /////////////////////////////
    type A struct{

    }

    func (b *A) do(){
    fmt.Println("aaa")
    }

    func (b *A) run(){
    for i:=0 ; i<10;i++{
    b.do()
    }
    }
    //////////////////////////////////
    type B struct{
    A
    }

    func (b *B) do(){
    fmt.Println("bbbbb")
    }


    func main() {
    b :=B{}
    b.run()
    }

    A 是基类,想要逻辑结构写在 run()中,业务写在 do()中 ,B 是子类,想要修改 B 中的 do()实现不同的业务,这里该如何才能实现呢?
    当前输出的是:
    aaa
    想要输出的是:
    bbbbbb
    hooluupog
        1
    hooluupog  
       2017-09-29 15:47:31 +08:00   ❤️ 1
    这个结构体嵌入和抽象类继承还是有些不同的。可以通过依赖注入实现类似的效果:
    https://gist.github.com/hooluupog/fd9cbe0a68e54c331b7bf5988054122b
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   914 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:37 · PVG 05:37 · LAX 14:37 · JFK 17:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.