英文:
Access private fields of a package in golang using reflect
问题
我正在为golang中的一个包编写单元测试。我需要创建一个私有字段类型的变量,该变量位于不同的包中,以便将其作为参数传递给我正在测试的函数。
包:go/abc/a.go
type newType int
包:go/edf/b.go
import "go/abc"
func init(abc newType){
// 省略部分代码
}
现在我正在为b.go编写单元测试
包:go/edf/b_test.go
func TestInit(){
// 现在我需要在abc包中创建一个私有字段类型newType的变量
// 以便将其作为参数传递给init函数
}
在golang中,可以使用reflect或packages包来实现这一点吗?
英文:
I am writing a unit test for a package in golang. I need to create a variable of private field type which resides in a different package to pass it as a parameter to the function that I am testing.
package : go/abc/a.go
type newType int
package : go/edf/b.go
import "go/abc"
func init(abc newType){
// ommitted for brevity
}
Now I am writing unit test for b.go say
package : go/edf/b_test.go
func TestInit(){
// Now I need to create a variable of private field type newType in abc package
// for passing as parameter to the init function....
}
Is it possible to achieve this using reflect or packages package in golang
答案1
得分: 2
你无法这样做。未导出(即你所称的私有)的唯一目的是无法从外部访问。
英文:
> I need to access a private field in a package
You cannot do this. The sole purpose of being unexported (what you call private) is to be inaccessable from outside.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论