Home > Back-end >  Golang namespaces of namespaces
Golang namespaces of namespaces

Time:02-13

I'm kinda new to go and from being a C background I really wonder if its possible to achieve something like this. Let's say I have a math library and i want to make a namespace a children of another namespace like this.

  • main package
  • math package
    • matrix package
    • ...

And I want to call my code like this ;

math.matrix.CreateTranslation(mat4, 30, 50, 0)

Is there a way to achieve this kind of behaviour in go?

CodePudding user response:

Is there a way to achieve this kind of behaviour in go?

No, not really.

You can import "module/math" and then do math.SomeFunc. Or you can import "module/math/matrix" and then do matrix.SomeOtherFunc. These are referred to as "qualified identifiers".

But you cannot import "module/math" or "module/math/matrix" and then use a nested "qualified identifier" a la math.matrix.SomeOtherFunc. It's just not part of the spec.


Technically speaking it is possible to do the following:

math.Matrix.CreateTranslation(mat4, 30, 50, 0)

where Matrix is an exported variable in the math package and whose type either has a CreateTranslation method in its method set, or whose type is a struct type that has a function field called CreateTranslation.

While possible, it would, obviously, be an attempt to force an organizational pattern on a language that does not support it.

  • Related