The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
qW7bo2FbzbC0

初始化带方法的结构体的方式选择?

  •  
  •   qW7bo2FbzbC0 · Apr 4, 2020 via Android · 2325 views
    This topic created in 2233 days ago, the information mentioned may be changed or developed.
    1. func NewStruct (){Struct error}

    还是

    2. func (s Struct) Init()

    大家倾向于用哪种?有啥优劣吗?
    10 replies    2020-04-07 12:37:46 +08:00
    WilliamYang
        1
    WilliamYang  
       Apr 4, 2020
    第一种
    useben
        2
    useben  
       Apr 4, 2020
    第一种。实现接口,方便依赖注入,面向接口而非实现开发
    gamexg
        3
    gamexg  
       Apr 4, 2020 via Android
    第一种,不过经常第一种实际调用 Reset 方法。
    scnace
        4
    scnace  
       Apr 4, 2020 via Android
    大部分情况第一种,第二种的形式会用在实现某些 interface,比如
    ```go
    for _,cmd:=range cmds {
    cmd.Init()
    // Others
    }
    ```
    (这里的 cmd 是某个抽象的 Interface,来避免使用一些全局的 init()方法
    MikeLei
        5
    MikeLei  
       Apr 4, 2020
    各位大佬,这是啥语言啊,结构体里面还允许有方法,那不就跟类差不多了嘛。
    neoblackcap
        6
    neoblackcap  
       Apr 4, 2020
    @MikeLei 看那命名以及函数签名就知道是 golang 了
    Mitt
        7
    Mitt  
       Apr 4, 2020
    @MikeLei C++里结构体也是允许有方法的
    MikeLei
        8
    MikeLei  
       Apr 4, 2020
    @neoblackcap
    @Mitt
    不好意思,没接触过 C++和 go,还是得拓宽视野。
    tairan2006
        9
    tairan2006  
       Apr 5, 2020 via Android
    第一种,官方一般也是
    qW7bo2FbzbC0
        10
    qW7bo2FbzbC0  
    OP
       Apr 7, 2020
    感谢各位
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2957 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 05:31 · PVG 13:31 · LAX 22:31 · JFK 01:31
    ♥ Do have faith in what you're doing.