怎么在golang中利用结构体嵌套的切片数组

  介绍

本篇文章为大家展示了怎么在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中利用结构体嵌套的切片数组