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
。定义新类型时,它是一个新类型。