## Issue

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?

## Solution

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.

Answered By – mkopriva

Answer Checked By – Senaida (GoLangFix Volunteer)