别名转换

Ale*_*nin 0 casting go

我有struct AccessToken外部库的一部分,我自己使用该库.我想返回这种类型的值,但我没有看到为什么我的内部实现应该从外部可见的任何原因.类型别名看起来很棒.

type AccessToken oauth.AccessToken
Run Code Online (Sandbox Code Playgroud)

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

func Auth(key string, secret string) *AccessToken {
...
    var token oauth.AccessToken = AuthorizeToken(...)
    return AccessToken(*token)
}
Run Code Online (Sandbox Code Playgroud)

错误:

cannot use AccessToken(*accessToken) (type AccessToken) as type *AccessToken in return argument
Run Code Online (Sandbox Code Playgroud)

很明显,我可以通过恶魔复制结构字段.但有没有办法使用别名?

Not*_*fer 5

我不知道你得到了什么错误,但这个表达式错了:

func Auth(key string, secret string) *AccessToken {
...
    var token oauth.AccessToken = AuthorizeToken(...)
    return AccessToken(*token)
}
Run Code Online (Sandbox Code Playgroud)

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

如果要返回指向AccessToken类型的指针,则代码应该更符合以下方面:

func Auth(key string, secret string) *AccessToken {
...
    token := AccessToken(AuthorizeToken(...))
    return &token
}
Run Code Online (Sandbox Code Playgroud)