首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部函数中Go结构的访问值

外部函数中Go结构的访问值
EN

Stack Overflow用户
提问于 2015-07-25 02:32:21
回答 1查看 114关注 0票数 0

我有以下函数说明符,它正确地工作并打印出来。

代码语言:javascript
复制
import (
    "fmt"
    "github.com/google/go-github/github"
)

func LatestTag(user, project string) {

    client := github.NewClient(nil)
    releases, _, err := client.Repositories.ListTags(user, project, nil)

    if err != nil {
        fmt.Printf("error: %v\n", err)
    } else {
        release := releases[0]
        fmt.Printf("Version: %+v\n", *release.Name)
    }

}

编辑

我已经修改了函数,以返回一个字符串(我认为这是不对的),但希望它能够帮助我了解我想要做的事情。

代码语言:javascript
复制
import (
    "fmt"
    "github.com/google/go-github/github"
)

func LatestTag(user, project string) string {

    client := github.NewClient(nil)
    releases, _, err := client.Repositories.ListTags(user, project, nil)
    var release string

    if err != nil {
        fmt.Printf("error: %v\n", err)
    } else {
        release := releases[0]
    }
    return *release.Name
}

我想返回*release.Name的值,而不只是打印出来,这样我就可以从另一个函数访问这个值,但是我不明白在这种情况下返回是如何工作的(非常新)。

我在想,我可以将结构作为字符串返回,但运行时会出现错误。

代码语言:javascript
复制
release.Name undefined (type string has no field or method Name)

这让我觉得我没有正确地对待这件事。谁能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-25 07:21:08

一个问题是:

代码语言:javascript
复制
var release string
...
if err != nil {
...
} else {
    release := releases[0]  // <-- here
}

在指示的行中,您定义了一个名为release的新变量,它等于releases[0],其作用域仅限于else子句(使用:=)。那就会立即超出范围。我很惊讶你没有收到一个未使用的变量警告。看起来您还需要将release类型更改为github.RepositoryTag。尝试:

代码语言:javascript
复制
var release github.RepositoryTag
...
if err != nil {
...
} else {
    release = releases[0]  // note equals sign
}

然而,一种更惯用的方法是(未经测试的):

代码语言:javascript
复制
func LatestTag(user, project string) (string, error) {
    client := github.NewClient(nil)
    if releases, _, err := client.Repositories.ListTags(user, project, nil); err != nil {
        return "", err
    } else {
        release := releases[0]
        return *release.Name, nil
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31622282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档