Search code examples
gosubclassing

Subclassing an object in a different package in golang


I'm trying to create a base object for all my structs in golang. For some reason I can't get it to work when the new object I create is in a different package. It works fine when they are in the same package/folder.

e.g. a base class for all objects

package Test

type BaseObject struct {
    base interface{}
}

---- Sub Folder Test\Stuff ---

create a new TestObject which subclasses 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!!!
}

--- In the same folder, everthing works ---

package Test

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

Solution

  • You can't reference hidden or "private" fields in structs outside their packages.

    If you would just do:

    type BaseObject struct {
        Base interface{}
    }
    

    Base will be exposed or "public" in the context of other packages, and everything will work.