用Golang出口进口

时间:2018-10-23 03:30:16

标签: go

不确定Golang是否可行。使用Node.js,我会这样做:

import * as person from './person';
export {person};

在Golang中,我有models.go

package models

import (
    "huru/models/person"
)

是否可以从这个models.go文件中,以与TypeScript / node.js类似的人员名称空间导出人员?

4 个答案:

答案 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