【问题标题】:Create struct in one function to be used in another在一个函数中创建结构以在另一个函数中使用
【发布时间】:2017-07-08 22:44:55
【问题描述】:

我是 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

}

提前致谢。

【问题讨论】:

  • 函数中定义的结构不能与其他函数共享。它们必须在包级别定义。但是您的代码并没有显示您在做这些事情中的任何一个。所以我真的不知道你在问什么。

标签: go


【解决方案1】:

好吧,我想我明白了。我必须使用第一个大写字母才能在另一个函数中访问此返回结构的问题清洗。

文件 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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多