栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Go中的嵌套数组结构

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go中的嵌套数组结构

由于“过滤器”字段中的切片类型没有名称,因此在初始化时必须重复定义:

package mainimport "fmt"type ReportDefinition struct {    Filters []struct { Column struct {         ColumnName string `json:"columnName"`         Value      string `json:"value"` } `json:"column"` Operator string `json:"operator"`    } `json:"filters"`}func main() {    var rd ReportDefinition    rd.Filters = append(rd.Filters, struct { Column struct {         ColumnName string `json:"columnName"`         Value      string `json:"value"` } `json:"column"` Operator string `json:"operator"`    }{ Column: struct {         ColumnName string `json:"columnName"`         Value      string `json:"value"` }{         ColumnName: "foo",         Value:      "bar", }, Operator: "==",    })    fmt.Printf("+%vn", rd)}

应当清楚的是,这非常不方便,因此您应该给类型名称(至少要初始化的名称):

package mainimport "fmt"type ReportDefinition struct {    Filters []Filter `json:"filters"`}type Filter struct {    Column   Column `json:"column"`    Operator string `json:"operator"`}func NewFilter(col, op, val string) Filter {    return Filter{ Column: Column{         ColumnName: col,         Value:      val, }, Operator: op,    }}type Column struct {    ColumnName string `json:"columnName"`    Value      string `json:"value"`}func main() {    var rd ReportDefinition    rd.Filters = append(rd.Filters, NewFilter("foo", "==", "bar"))    fmt.Printf("+%vn", rd)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号