2017-02-19 9 views
-4

Ich bin neu in Golang und immer noch versucht, meinen Kopf um Strukturen zu bekommen. Ich kann mir nicht vorstellen, wie ich es in einer Funktion erstellen und in einer anderen verwenden kann.Create struct in einer Funktion in einem anderen verwendet werden

Hier ist mein Code.

Datei 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 
} 

Datei 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 

} 

Vielen Dank im Voraus.

+0

Structs innerhalb von Funktionen definiert _cannot_ mit anderen Funktionen geteilt werden. Sie müssen auf der Paketebene definiert sein. Aber dein Code zeigt dir nicht, dass du eines dieser Dinge tust. Also habe ich wirklich keine Ahnung, was du fragst. – Flimzy

Antwort

0

Ok, ich denke ich habe es herausgefunden. Das Problem Wash, dass ich First Capital Buchstaben verwenden musste, um auf diese Return-Struktur in einer anderen Funktion zugreifen zu können.

Datei 1 main.go

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

File 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 

} 
Verwandte Themen