我要直接从包公开函数.
因此我可以直接调用我的包,而不是mypackage.Somepublic()方法.

package main

import (
    "mypackage"
    "fmt"
)

func main() {
    var result = mypackage() 
    fmt.Println(result)    
}

例如,在node.js中,您可以公开匿名函数

module.export = function() {
    console.log('ta da!');
}

或者一个物体

module.export = {  
    doMagic: function() {  
        console.log('ta da!');
    }
};

推荐答案

虽然您的Node.js示例没有直接的类比,但是您可以在Go中执行一种称为"本地导入"的操作.基本上,本地导入会将包导出到本地命名空间的所有项(函数、类型、变量等)导入到您的本地命名空间中,以便可以像本地定义的那样访问它们.您可以通过在包名前面加一个点来实现这一点.例如:

import . "fmt"

func main() {
    Println("Hello!") // Same as fmt.Println("Hello!")
}

(请参阅action中的内容).

这将适用于fmt导出的任何项目.您可以对mypackage执行类似的操作(这是根据您发布的代码修改的):

package main

import (
    . "mypackage"
    "fmt"
)

func main() {
    var result = Somepublic() // Equivalent to mypackage.Somepublic()
    fmt.Println(result)    
}

Go相关问答推荐

T的Golang通用切片,其中 *T实现接口

Go-Colly:将数据切片为POST请求

Go SQLCMD比Windows本机版本慢吗?

如何在S汇编器中更高效地将全局数据加载到霓虹灯寄存器?

确定果朗CSV行中的字节数

go grpc:无法导入github.com/golang/protobuf/proto(没有所需的模块提供包github.com/gorang/protobuf-proto)

Go:为什么我不能比较 net.Addr

是否需要手动调用rand.Seed?

Kperf 构建失败

如何根据地址和大小打印字符串

使用goroutines在Golang中验证 struct

在 Windows 11 上运行 go mod tidy 时的 gitlab 权限问题

如何将任何类型的数据值传递到 Golang 中的 GRPC Protobuf struct ?

接受通道和切片的通用函数

来自洪流公告的奇怪同行字段

如何在 Golang 中使用具有相同名称或特定关键字的行或列重新排列/排序 CSV

使用反射在 struct 内迭代切片 struct

在 connect-go 拦截器中修改响应体

如何在循环中旋转图像以便在 golang 中创建 GIF?

go mod tidy 错误消息:但是 go 1.16 会 Select