不确定Golang是否可行。使用Node.js,我会这样做:
import * as person from './person';
export {person};
在Golang中,我有models.go
:
package models
import (
"huru/models/person"
)
是否可以从这个models.go文件中,以与TypeScript / node.js类似的人员名称空间导出人员?
答案 0 :(得分:8)
[I]是否可以像在TypeScript / node.js这样的人员名称空间中从这个models.go文件中导出人员?
否。
答案 1 :(得分:1)
是的,我们可以将结构从文件导出到另一个文件(或包),就像其他语言一样。
person.go
package models
// struct name should starts with Capital letter to export
type Person struct {
Name string
age int
}
如果导入文件位于相同的包(模型)中,则无需导入。直接就可以这样使用:
details.go
package models
var perObj Person
func abc() {
perObj.Name = "xyz"
}
如果导入文件位于其他软件包中,则导入模型软件包。
businesslogic.go
package logic
import (
"../../models"
)
var perObj Person
func abc() {
perObj.Name = "xyz"
}
答案 2 :(得分:1)
@MrCholo这里的golang概念有点不同。在命名空间范围内可用的golang结构。
像例子一样
package models
// struct name should starts with Capital letter to export
type Person struct {
Name string
age int
}
Person
结构将在同一个命名空间(例如modles
)范围内的所有文件中可用。您无需导入。
但是,如果您想在models
名称空间之外访问,则必须导入包models
并使用该包访问Person
对象。
例如
package anotherpackage
import (
"<path to models>/models"
)
var perObj models.Person // here is how you can access the Person struct
让我知道您是否仍然不清楚。
答案 3 :(得分:0)
您不能仅通过完整的软件包。您可以通过基于它们创建自己的类型来传递不同的类型。如果有person.Person
:
package models
import (
"huru/models/person"
)
type Person person.Person
//or
type EmbeddedPerson struct{
person.Person
additional string
}
这具有允许您添加自己的功能的优点
func (p Person) CustomFunc() {}
这里是一个游乐场链接,显示了其中的一些细微差别:https://play.golang.org/p/1aLOcmsXHV2