登录
首页 >  Golang >  Go问答

如何在 Go 中显式转换类型?

来源:stackoverflow

时间:2024-04-30 17:25:53 124浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《如何在 Go 中显式转换类型?》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我有一个静态声明的变量

var fun *ast.fundecl

还有一个名为 decl 的数组,类型为 ast.decl,其中包含不同类型 ast.gendecl*ast.fundecl 的项目。

现在,在运行时我想迭代数组并将第一个出现的 *ast.fundecl 类型的项分配给我的变量 fun

在我的数组迭代中,其中 d 是当前数组元素,我正在使用:

switch t := d.(type)
{
    case *ast.fundecl:
    {
        fun = d // cannot use d (variable of type ast.decl) as *ast.funcdecl value in assignment
    }

    // more type cases ...
}

此外,尝试使用显式强制转换

fun = *ast.FunDecl(d)

恐慌说:

无法将 d(ast.decl 类型的变量)转换为 ast.funcdecl。

除了解决这个特殊情况之外,这还给我带来了一个普遍问题,如何处理这样的类型转换情况?如果我知道变量的类型与我的转换相匹配,如何将其转换为特定类型?


正确答案


您需要分配类型转换值 t 而不是 d

switch t := d.(type){
    case *ast.FunDecl:
    {
        fun = t
    }
}

本篇关于《如何在 Go 中显式转换类型?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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