命名空间的 Golang 命名空间
Golang namespaces of namespaces
我有点陌生,作为 C++ 背景,我真的很想知道是否有可能实现这样的目标。假设我有一个数学库,我想像这样将一个命名空间作为另一个命名空间的子命名空间。
- 主包
- 数学包
- 矩阵包
- ...
我想这样调用我的代码;
math.matrix.CreateTranslation(mat4, 30, 50, 0)
有没有办法在 go 中实现这种行为?
Is there a way to achieve this kind of behaviour in go?
不,不是真的。
您可以导入 "module/math"
,然后执行 math.SomeFunc
。或者您可以导入 "module/math/matrix"
然后执行 matrix.SomeOtherFunc
。这些被称为“合格标识符”。
但是您不能导入 "module/math"
或 "module/math/matrix"
然后使用 嵌套 “限定标识符”如 math.matrix.SomeOtherFunc
。它只是不属于 spec.
从技术上讲,可以执行以下操作:
math.Matrix.CreateTranslation(mat4, 30, 50, 0)
其中 Matrix
是 math
包中导出的 变量 并且其类型在其方法集中有一个 CreateTranslation
方法,或其类型是 struct 类型,具有名为 CreateTranslation
.
的函数 field
虽然有可能,但很明显,这是一种将组织模式强加于不支持它的语言的尝试。
我有点陌生,作为 C++ 背景,我真的很想知道是否有可能实现这样的目标。假设我有一个数学库,我想像这样将一个命名空间作为另一个命名空间的子命名空间。
- 主包
- 数学包
- 矩阵包
- ...
我想这样调用我的代码;
math.matrix.CreateTranslation(mat4, 30, 50, 0)
有没有办法在 go 中实现这种行为?
Is there a way to achieve this kind of behaviour in go?
不,不是真的。
您可以导入 "module/math"
,然后执行 math.SomeFunc
。或者您可以导入 "module/math/matrix"
然后执行 matrix.SomeOtherFunc
。这些被称为“合格标识符”。
但是您不能导入 "module/math"
或 "module/math/matrix"
然后使用 嵌套 “限定标识符”如 math.matrix.SomeOtherFunc
。它只是不属于 spec.
从技术上讲,可以执行以下操作:
math.Matrix.CreateTranslation(mat4, 30, 50, 0)
其中 Matrix
是 math
包中导出的 变量 并且其类型在其方法集中有一个 CreateTranslation
方法,或其类型是 struct 类型,具有名为 CreateTranslation
.
虽然有可能,但很明显,这是一种将组织模式强加于不支持它的语言的尝试。