【问题标题】:Subclassing an object in a different package in golang在golang的不同包中子类化一个对象
【发布时间】:2014-09-02 10:18:03
【问题描述】:

我正在尝试为我在 golang 中的所有结构创建一个基础对象。出于某种原因,当我创建的新对象位于不同的包中时,我无法让它工作。当它们在同一个包/文件夹中时,它可以正常工作。

例如所有对象的基类

package Test

type BaseObject struct {
    base interface{}
}

---- 子文件夹 Test\Stuff ---

创建一个新的 TestObject,它是 BaseObject 的子类

package Stuff

import Test "Test"

type TestObject struct{
    Test.BaseObject
}
func (this *TestObject)DoSomething(){
    any reference to this.base or this.BaseObject.base fails!!!
}

--- 在同一个文件夹中,一切正常---

package Test

type TestObject struct{
    BaseObject
}
func (this *TestObject)DoSomething(){
    any reference to this.base works fine??
}

【问题讨论】:

    标签: go subclassing


    【解决方案1】:

    您不能在其包之外的结构中引用隐藏或“私有”字段。

    如果你愿意这样做:

    type BaseObject struct {
        Base interface{}
    }
    

    Base 将在其他包的上下文中被公开或“公开”,一切都会正常工作。

    【讨论】:

    • 完美!现在完全有道理。
    猜你喜欢
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多