学习Golang要努力,但是不要急!今天的这篇文章《将接口转换为目标类型》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!
问题内容我有这个方法,我收到一个 int64
参数。该参数在某些区域使用,然后应该传递给另一个需要不同类型的方法(来自外部库):type acctinteriminterval uint32
我尝试将其转换为 uint32
但脚本抱怨它:invalid 类型断言:...(左侧的非接口类型 int)
。
我也尝试将其转换为 acctinteriminterval
但这次出现了不同的错误:interface conversion: interface {} is int, not main.acctinteriminterval
这是迄今为止我的测试代码:
package main
import (
"fmt"
)
// defined in some other lib
type AcctInterimInterval uint32
// defined in some other lib
func test(value AcctInterimInterval){
fmt.Println(value)
}
func main() {
// int received externally
interval := 60
var acctInterval interface{} = interval
test(acctInterval.(AcctInterimInterval))
}
相关演示:https://play.golang.org/p/ttw5j2fiay3
解决方案
您的 acctinterval
变量包装了 int
值,因此您只能从中获取 int
type-assert:
acctinterval.(int)
然后您可以将 convert 转至 acctinteriminterval
:
test(AcctInterimInterval(acctInterval.(int)))
在 Go Playground 上试试。
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~