Самопризывающая функция с Голангом - PullRequest
0 голосов
/ 02 декабря 2018

Не удалось легко найти информацию о том, как создать самовызывающийся функционал в Голанге.

Моя конечная цель - экспортировать карту из файла, что-то вроде этого:

type Foo struct {}
type Bar struct {}

var TypeMap map[interface{}]string;

func selfInvoking(){

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

как мне экспортировать заполненную карту, подобную этой, из файла в Go?Это в основном для одноразовой конфигурации.

Используя вышеописанный шаблон, я получу

"неиспользуемая переменная TypeMap".

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Существует 3 способа выполнения кода инициализации в GO:

В вашем случае вы можете использовать два последних.

Переменная:

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

Функция инициализации:

var TypeMap map[interface{}]string

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

В любом случае будьте осторожны с инициализаторами и не используйте их для какого-либо сложного или io кода.Инициализатор не очень хорош для модульного тестирования и обработки ошибок / регистрации.

0 голосов
/ 02 декабря 2018

не уверен, чего вы пытаетесь достичь, но это составляет не менее

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...