如何使用数组结合olog库在框架中打印数据?
问题分析与解决
错误原因
Go语言中,结构体字面量的字段名必须是结构体定义中声明的固定标识符,不能是变量、数组元素这类运行时才能确定值的表达式。你代码里的dt.TicketHeading[0]是一个运行时变量值,并非Data结构体定义的字段名,因此编译器抛出"invalid field name"错误。
正确实现方案
方案1:直接使用结构体定义的字段名赋值
如果你的需求是给Data结构体的Ticket_title和Ticket_description字段赋值,直接用结构体声明的字段名初始化即可:
package main import "github.com/da0x/golang/olog" type Data struct { TicketHeading [2]string Ticket_title, Ticket_description string } func main() { var dt Data dt.TicketHeading = [2]string{"Ticket_titles", "Ticket_descriptions"} var data = []Data{ {Ticket_title: "This is the ticket heading"}, {Ticket_description: "This is the ticket description"}, } olog.Print(data) }
方案2:用map实现动态键值对(如果需要动态使用TicketHeading中的字符串作为键)
如果你的需求是将TicketHeading里的字符串作为动态键来打印键值对,应该使用map[string]string替代自定义结构体——因为结构体字段是编译期固定的,无法动态指定:
package main import "github.com/da0x/golang/olog" type Data struct { TicketHeading [2]string } func main() { var dt Data dt.TicketHeading = [2]string{"Ticket_titles", "Ticket_descriptions"} var data = []map[string]string{ {dt.TicketHeading[0]: "This is the ticket heading"}, {dt.TicketHeading[1]: "This is the ticket description"}, } olog.Print(data) }
内容的提问来源于stack exchange,提问作者Kaifah Habibi
相关产品推荐
相关产品推荐

