英文:
How to check if a struct contains unexported fields in Golang?
问题
我有一个结构体:
type Person struct {
Name string
DOB string
age int
}
如何构建detectUnexportedInStruct()
函数,以便在结构体中检测是否存在未导出的字段?我希望当Person结构体包含未导出的字段age
时,打印出true
。
英文:
Example:
I have a struct,
type Person struct {
Name string
DOB string
age int
}
func detectUnexportedInStruct(i interface{}) bool {
// if `i` contains unexported fields return true
// else return false
}
func main() {
fmt.Println(detectUnexportedInStruct(Person{Name: "", DOB: ""}))
}
I would want true
to be printed because Person contains an unexported field age
.
How can I build my detectUnexportedInStruct()
?
答案1
得分: 4
使用reflect
包:
func detectUnexportedInStruct(i interface{}) bool {
rt := reflect.TypeOf(i)
for i := 0; i < rt.NumField(); i++ {
if !rt.Field(i).IsExported() {
return true
}
}
return false
}
https://play.golang.org/p/f_JVLWYavjm
英文:
Use the reflect
package:
func detectUnexportedInStruct(i interface{}) bool {
rt := reflect.TypeOf(i)
for i := 0; i < rt.NumField(); i++ {
if !rt.Field(i).IsExported() {
return true
}
}
return false
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论