【问题标题】:How to make a variable with this data type and value in Golang? Pointer to a struct with a nil value?如何在 Golang 中创建具有这种数据类型和值的变量?指向具有 nil 值的结构的指针?
【发布时间】:2022-01-13 05:51:06
【问题描述】:

我正在做一个单元测试,但是我发现了我不理解的这种数据类型。

Error:          
       Not equal: 
                 expected: <nil>(<nil>)
                 actual  : *pkgname.StructName((*pkgname.StructName)(nil))

仅供参考,pkgname 是包的名称,StructName 是结构的名称

如何创建具有相同数据类型和值“*pkgname.StructName((*pkgname.StructName)(nil))”的变量?

它是指向 nil 值的结构指针吗?

【问题讨论】:

    标签: unit-testing go pointers struct null


    【解决方案1】:

    你没有提到你使用的测试框架或方法,但从错误来看,最肯定的错误是你期望一个nil值(没有类型),你得到一个nil指针值有一个带有具体基类型的指针类型。

    要修复它,您应该期望输入 nil 值,而不是 nil 接口值(无类型)。

    例如:

    actualValue := ... // Execute function / method / whatever, obtain testable value
    
    // Test it the way you do
    // (Here I assume you do it with a function named expectEqual):
    expectEqual((*pkgname.StructName)(nil), actualValue)
    

    注意(*pkgname.StructName)(nil)conversion 类型,它将nil(指针)值转换为*pkgname.StructName 指针类型。

    查看相关问题:

    Convert nil interface to pointer of something in Golang?

    Hiding nil values, understanding why golang fails here

    【讨论】:

    • 很好的答案!这就是我要找的。是的,我不明白 (*pkgname.StructName)(nil) 但现在我明白了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2023-03-23
    相关资源
    最近更新 更多