2017-02-19 8 views
-4

Я новичок в Golang и все еще пытаюсь разглядеть структуры. Я не могу понять, как это сделать и создать его в одной функции, и использовать его в другом.Создайте структуру в одной функции, которая будет использоваться в другом

Вот мой код.

Файл 1 main.go

package main 

import (
    "github.com/asolopovas/docker_valet/modules" 
    "fmt" 
) 
func main { 
    fl := dockervalet.GetFlags() 
    fmt.Pringln(fl.user) // returns fl.user undefined 
} 

Файл 2 flags.go

package dockervalet 

import (
    "flag" 
    "fmt" 
) 

type Flags struct { 
    user  string 
} 

func GetFlags() Flags { 
    var userFlag string 
    flag.StringVar(&userFlag, "u", "", "") 
    flag.StringVar(&userFlag, "user", "", "") 
    flag.Parse() 

    fl := Flags{ 
     user: userFlag, 
    } 

    fmt.Println(fl.user) // works as expected 

    return fl 

} 

Спасибо заранее.

+0

Структуры, определенные в пределах функций _cannot_ совместно с другими функциями. Они должны быть определены на уровне пакета. Но ваш код не показывает, что вы делаете одну из этих вещей. Поэтому я действительно понятия не имею, о чем вы спрашиваете. – Flimzy

ответ

0

Хорошо, я понял, что понял. Проблема заключается в том, что я должен был использовать буквы First Capital, чтобы иметь возможность получить доступ к этой структуре возврата в другой функции.

Файл 1 main.go

func main { 
    fl := GetFlags() 
    fmt.Pringln(fl.User) 
} 

Файл 2 flags.go

type Flags struct { 
    User  string 
} 

func GetFlags() Flags { 
    var userFlag string 
    flag.StringVar(&userFlag, "u", "", "") 
    flag.StringVar(&userFlag, "user", "", "") 
    flag.Parse() 

    fl := Flags{ 
     User: userFlag, 
    } 

    fmt.Println(fl.user) // works as expected 

    return fl 

}