英文:
How to make a variable with this data type and value in Golang? Pointer to a struct with a nil value?
问题
我正在进行单元测试,但我发现了一个我不理解的数据类型。
错误信息:
不相等:
期望值:<nil>(<nil>)
实际值:*pkgname.StructName((*pkgname.StructName)(nil))
FYI,pkgname是一个包的名称,StructName是一个结构体的名称。
如何创建一个与"*pkgname.StructName((*pkgname.StructName)(nil))"具有相同数据类型和值的变量?
它是一个指向nil值的结构体指针吗?
英文:
I am doing a unit test, but I found this data type that I don't understand.
Error:
Not equal:
expected: <nil>(<nil>)
actual : *pkgname.StructName((*pkgname.StructName)(nil))
FYI, pkgname is a name of a package, StructName is a name of a Struct
How do I make a variable with the same datatype and value of "*pkgname.StructName((*pkgname.StructName)(nil))"?
Is it a pointer of struct to a nil value?
答案1
得分: 3
你没有提到你使用的测试框架或方法,但根据错误判断,错误很可能是你期望一个没有类型的nil
值,而实际上你得到了一个具有指针类型和具体基础类型的nil
指针值。
要修复这个问题,你应该期望一个有类型的nil
值,而不是一个没有类型的nil
接口值。
例如:
actualValue := ... // 执行函数/方法/其他操作,获取可测试的值
// 以你的方式进行测试
// (这里假设你使用名为expectEqual的函数进行测试):
expectEqual((*pkgname.StructName)(nil), actualValue)
注意,(*pkgname.StructName)(nil)
是一种类型转换,它将nil
(指针)值转换为*pkgname.StructName
指针类型。
参考相关问题:
英文:
You don't mention which testing framework or method you use, but judging from the error, most certainly the mistake is that you expect a nil
value (without type), and you get a nil
pointer value which has a pointer type with a concrete base type.
To fix it, you should expect a typed nil
value, and not a nil
interface value (without type).
For example:
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)
Note that (*pkgname.StructName)(nil)
is a type conversion, it converts the nil
(pointer) value to *pkgname.StructName
pointer type.
See related questions:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论