别名转换



struct AccessToken作为外部库的一部分,我在自己的库中使用该库。我想返回这种类型的值,但我看不出任何理由为什么我的内部实现应该从外部可见。类型别名看起来很棒。

type AccessToken oauth.AccessToken

但是我在尝试下一步时遇到错误:

func Auth(key string, secret string) *AccessToken {
...
    var token oauth.AccessToken = AuthorizeToken(...)
    return AccessToken(*token)
}

错误:

cannot use AccessToken(*accessToken) (type AccessToken) as type *AccessToken in return argument

很明显,我只能通过恶魔复制结构字段。但是有没有办法使用别名?

我不知道

你得到什么错误,但这个表达式是错误的:

func Auth(key string, secret string) *AccessToken {
...
    var token oauth.AccessToken = AuthorizeToken(...)
    return AccessToken(*token)
}

它说"获取token的指针值(它根本不是指针,这意味着它是一个语法错误),将其转换为AccessToken并返回它"。但是该函数返回指向 AccessToken 的指针,而不是值,因此这是无效的。

如果要返回指向AccessToken类型的指针,则代码应更类似于:

func Auth(key string, secret string) *AccessToken {
...
    token := AccessToken(AuthorizeToken(...))
    return &token
}

最新更新