具有Golang的自调用函数

具有Golang的自调用函数,go,Go,无法轻松找到有关如何在Golang中创建自调用func的信息 我的最终目标是从文件中导出地图,如下所示: type Foo struct {} type Bar struct {} var TypeMap map[interface{}]string; func selfInvoking(){ TypeMap = map[interface{}]string{ Foo: "foo", Bar: "bar" } }() 如何从go中的文件导出这样的填充地图?它基本

无法轻松找到有关如何在Golang中创建自调用func的信息

我的最终目标是从文件中导出地图,如下所示:

type Foo struct {}
type Bar struct {}

var TypeMap map[interface{}]string;

func selfInvoking(){

  TypeMap = map[interface{}]string{
    Foo: "foo",
    Bar: "bar"
   }
}()
如何从go中的文件导出这样的填充地图?它基本上是一次性配置

使用上面的模式,我将获得

“未使用的变量类型映射”


不确定您想要实现什么,但这至少可以编译

import (
    "fmt"
)
type Foo struct {}
type Bar struct {}

var TypeMap map[interface{}]string;

func selfInvoking(){

  TypeMap = map[interface{}]string{
    Foo{}: "foo",
    Bar{}: "bar",
   }


}


func main() {
selfInvoking()
fmt.Println(TypeMap)
}

不确定您想要实现什么,但这至少可以编译

import (
    "fmt"
)
type Foo struct {}
type Bar struct {}

var TypeMap map[interface{}]string;

func selfInvoking(){

  TypeMap = map[interface{}]string{
    Foo{}: "foo",
    Bar{}: "bar",
   }


}


func main() {
selfInvoking()
fmt.Println(TypeMap)
}

GO
中执行初始化代码有3种方法:

在您的情况下,您可以使用最后两个

变量:

var TypeMap = map[interface{}]string{
    Foo{}: "foo",
    Bar{}: "bar",
   }
init函数:

var TypeMap map[interface{}]string

func init(){
  TypeMap = map[interface{}]string{
    Foo: "foo",
    Bar: "bar",
   }
}
在任何情况下,请小心使用初始值设定项,不要将其用于任何复杂或
io
代码。
初始化器对于单元测试和错误处理/日志记录不是很好。

GO
中有3种执行初始化代码的方法:

在您的情况下,您可以使用最后两个

变量:

var TypeMap = map[interface{}]string{
    Foo{}: "foo",
    Bar{}: "bar",
   }
init函数:

var TypeMap map[interface{}]string

func init(){
  TypeMap = map[interface{}]string{
    Foo: "foo",
    Bar: "bar",
   }
}
在任何情况下,请小心使用初始值设定项,不要将其用于任何复杂或
io
代码。
初始化器对于单元测试和错误处理/日志记录不是很好。

谁来调用main?我不是..我需要在声明后立即调用自调用func,我不认为这可以实现这一点?我之所以使用func,首先是为了填充导出的映射类型映射。我想用init代替main?init是否会自动在文件中被调用?是的,很抱歉,我不明白您在问题中的意思:)没问题,在JS中,自调用函数相对比较常见,用于创建隔离作用域,或递归,或什么notah,对。JS有点不同,因为它没有编译。JS可能是世界上最流行的语言,但我个人觉得它的语义和语法有点古怪!谁给梅因打电话?我不是..我需要在声明后立即调用自调用func,我不认为这可以实现这一点?我之所以使用func,首先是为了填充导出的映射类型映射。我想用init代替main?init是否会自动在文件中被调用?是的,很抱歉,我不明白您在问题中的意思:)没问题,在JS中,自调用函数相对比较常见,用于创建隔离作用域,或递归,或什么notah,对。JS有点不同,因为它没有编译。JS可能是世界上最流行的语言,但我个人觉得它的语义和语法有点古怪!我想你想使用包的init函数。@ain是的,我想你是对的-请看Dmitry的答案,但如果有办法创建自调用函数,我想看一下。谢谢,我想你想使用包的init函数。@ain是的,我想你是对的-请看Dmitry的答案,但是,如果有一种方法可以创建自调用func,我很想看到它谢谢,好吧,我不知道你可以在func之外创建一个变量,就像那样。啊,好吧,我不知道你可以在func之外创建一个变量