我的自定义类型别名( with methods )定义为:
type AwsRegion string
然后我想将此类型的变量传递给另一个遗留(不在我的控制下)函数,该函数接受指向字符串的指针(指向底层类型的指针): / p>
func main() {
var region AwsRegion = "us-west-2"
f(®ion) // How to properly cast AwsRegion type here?
}
func f(s *string) {
fmt.Println(*s) // just an example
}
当然我不能那样做,错误信息说明:
cannot use ®ion (type *AwsRegion) as type *string in argument to f
如何正确投射region
变量?
答案 0 :(得分:1)
region
变量应该投放到pointer to string
类型。
但是由于*
运算符优先级,这应该以这种方式完成:
package main
import (
"fmt"
)
type AwsRegion string
func main() {
var region AwsRegion = "us-west-2"
f((*string)(®ion)) // parentheses required!
}
func f(s *string) {
fmt.Println(*s)
}
链接到playground
答案 1 :(得分:0)
如果您的输入需要AwsRegion
作为输入,我不明白为什么需要定义string
类型。
使用f(s *AwsRegion)
编辑 - 根据您的意见
package main
import (
"flag"
"fmt"
)
type AwsRegion string
var region AwsRegion
func main() {
flag.StringVar((*string)(®ion), "region", "us-west-1", "AWS region to use")
flag.Parse()
}
func f(s *string) {
fmt.Println(*s) // just an example
}