Go 别名转换

Go 别名转换,go,casting,Go,Casting,我将struct AccessToken作为外部库的一部分,并在自己的库中使用该库。我想返回这种类型的值,但我看不出为什么我的内部实现应该从外部可见。类型别名在这方面看起来很棒 type AccessToken oauth.AccessToken 但我在尝试执行下一步操作时出错: func Auth(key string, secret string) *AccessToken { ... var token oauth.AccessToken = AuthorizeToken(...

我将
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
}
我不知道你犯了什么错误,但这个表达是错误的:

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
}

“我有一个错误。”什么错误?只是为了澄清术语,Go中唯一的别名是
byte
用于
uint8
rune
用于
int32
。当你定义一个新类型时,它是一个新类型。“我有一个错误。”什么错误?只是为了明确术语,Go中唯一的别名是
uint8的
byte
rune
int32
。定义新类型时,它是一个新类型。