介绍
本篇文章为大家展示了怎么在golang中利用结构体嵌套的切片数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
什么是golang
golang是谷歌开发的一种静态强类型,编译型,并发型,并具有垃圾回收功能的编程语言,其语法与C语言相近,但并不包括如枚举,异常处理,继承,泛型、断言,虚函数等功能。
package 主要 import ( ,“fmt" ) type XCDataStu  struct { ,Id , int ,,,的json:“id",,, xorm:“id"” ,Name string  json:“name",, xorm:“name"” } type XCDataStu1  struct { ,Id ,,,,,,,,,,, int ,,,的json:“id", xorm:“id"” ,Str1 ,,,,,,,,, string “json:“str1", xorm:“str1"” ,Db1 ,,,,,,,,,, string “json:“db1", xorm:“db1"” ,Device_type ,, string “json:“Device_type", xorm:“Device_type"” ,DeviceTypeName string “json:“DeviceTypeName"” } type XCDataStuAll  struct {//结构体嵌套 ,XCDataStuinall XCDataStu XCDataStu1inall XCDataStu1 } func main (), {/* 1 */,xcData :=, [] XCDataStu { XCDataStu才能{Id: 758年,,,名字:,“David758"}, XCDataStu才能{Id: 759年,,,名字:,“David759"}, ,}/* 2 */,xcdataall :=, ([] XCDataStuAll, len (xcData)) ,/* xcdataall [0]={, XCDataStu {Id: 758年,,,名字:,“David758"}, ,XCDataStu1 {Id: 0,, Str1:,“dsa",, Db1:,“dsa", Device_type才能:“fhls",, DeviceTypeName:,“dasf"}} */,fmt.Println (len (xcData)) ,fmt.Println (xcData [0]) ,fmt.Println (xcData [1]) 小姐::=,0 ,for ,小姐:& lt;, 2;,我+ +,{ xcdataall才能[我].XCDataStuinall.Id =, xcData[我].Id xcdataall才能[我].XCDataStuinall.Name =, xcData[我]. name ,} ,fmt.Println (xcdataall) }
结构体切片:
可以直接声明时初始化,如程序中1的
可以用,但是必须给定长度,否则不能使用下标进行赋值。
如程序中2的
,var xcdataall [] XCDataStuAll ,for ,小姐:& lt;, 2;,我+ +,{ xcdataall才能[我].XCDataStuinall.Id =, xcData[我].Id xcdataall才能[我].XCDataStuinall.Name =, xcData[我]. name 以前,}>程序编译没错,但是最后运行后会出现恐慌…
恐慌:运行时错误:指数的范围
引用><强>补充:去遍历结构体(结构)字段对应的值,切片(片),字典(map) 强>
一、遍历结构体字段:
<强>烤箱强>
package 主要 import ( ,,,“fmt" ,,,“reflect" ) type person  struct { ,,,name 字符串 ,,,age int } func main (), { ,,,v :=, reflect.ValueOf(人{“steve", 30}) ,,,count :=, v.NumField () ,,,for 小姐::=,0;,小姐:& lt;,计数;,我+ +,{ ,,,,,,,f :=, v.Field(我) ,,,,,,,switch f.Kind (), { ,,,,,,,case reflect.String: ,,,,,,,,,,,fmt.Println (f.String ()) ,,,,,,,case reflect.Int: ,,,,,,,,,,,fmt.Println (f.Int ()) ,,,,,,,} ,,,} }<>强输出结果:强>
史蒂夫
引用> 30日
<强> eg2: 强>
package 主要 import ( ,,,“fmt" ,,,“reflect" ) type NotknownType  struct { ,,,s1, s2, s3 字符串 } var secret 界面{},=,NotknownType {“Ada",,“Go",,“Oberon"} func main (), { ,,,value :=, reflect.ValueOf(秘密) ,,,for 小姐::=,0;,小姐:& lt;, value.NumField();,我+ +,{ ,,,,,,,fmt.Printf (% d:“Field % v \ n",,我,,value.Field(我)) ,,,} }<>强输出结果:强>
字段0:Ada
字段1:去
字段2:奥伯龙
引用>二,遍历切片:
用于范围结构
package 主要 import ( null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在golang中利用结构体嵌套的切片数组