• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aeshfawre
V2EX  ›  程序员

go 语言的一个小问题。

  •  
  •   aeshfawre · Sep 28, 2017 · 2108 views
    This topic created in 3151 days ago, the information mentioned may be changed or developed.
    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  
       Sep 29, 2017   ❤️ 1
    这个结构体嵌入和抽象类继承还是有些不同的。可以通过依赖注入实现类似的效果:
    https://gist.github.com/hooluupog/fd9cbe0a68e54c331b7bf5988054122b
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2963 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:56 · PVG 12:56 · LAX 21:56 · JFK 00:56
    ♥ Do have faith in what you're doing.