登录
首页 >  Golang >  Go问答

将接口转换为目标类型

来源:stackoverflow

时间:2024-03-29 11:03:27 434浏览 收藏

学习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的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>