1. 程式人生 > >go結構體巢狀的切片陣列

go結構體巢狀的切片陣列

package main

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, Name: "David758"},
		XCDataStu{Id: 759, Name: "David759"},
	}
/*2*/
	xcdataall := make([]XCDataStuAll, len(xcData))

	/*xcdataall[0]={	XCDataStu{Id: 758, Name: "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])
	i := 0
	for ; i < 2; i++ {
		xcdataall[i].XCDataStuinall.Id = xcData[i].Id
		xcdataall[i].XCDataStuinall.Name = xcData[i].Name
	}
	fmt.Println(xcdataall)

}


結構體切片:

  • 可以直接宣告時初始化,如程式中的1
  • 可以用make,但是必須給定長度,否則不能使用下標進行賦值。如程式中的2
	var xcdataall []XCDataStuAll
	for ; i < 2; i++ {
		xcdataall[i].XCDataStuinall.Id = xcData[i].Id
		xcdataall[i].XCDataStuinall.Name = xcData[i].Name
	}

程式編譯沒錯,但是最後執行後會出現panic。。。

panic: runtime error: index out of range

相關推薦

go結構切片陣列

package main import ( "fmt" ) type XCDataStu struct { Id int `json:"id" xorm:"id"` Name string `json:"name" xorm:"name"` } ty

day07 結構 匿名結構 結構的初始化 訪問 結構 結構的儲存空間 結構陣列

//結構體的定義/*  struct 結構體的定義{  資料型別成員變數1;  資料型別成員變數2;  .....  資料型別成員變數n;  }; 注意“;”  *///typedef(第一種方式)//先定義結構體,在說明結構體變數//struct myPoint{//    float x;//行座標// 

第22節 C語言結構結構結構指標與結構陣列的程式碼實現

結構體 #include <stdio.h> //第一步 struct Student { //學號 int no; //姓名 char name[20]; //性別 char

C語言_結構和字串陣列的表示_plusC14.3

#include<stdio.h> #define LEN 20 const char *mgs[5]= {"qqqq","wwww","EEEEEEE","RRRR","TTTTT" }; struct apple {char smell[LEN];char

go語言基礎 結構

go語言當中的聚合和繼承都是模擬出來的,子類是可以使用父類裡的欄位或功能結構體的巢狀type A struct{  //父類name stringage int}type B struct{  //子類a A // 模擬聚合關係.....}type C struct{   /

jchdl - RTL例項 - And2And(結構的使用)

https://mp.weixin.qq.com/s/PQIPkDymvcGc_re8ux50vA   結構體可以巢狀使用。   參考連結 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl

C++ 結構

該部落格主要是示例如何使用結構體巢狀進行函式變數的封裝傳遞。 主要任務是使用一個結構體包含一些目標的名稱、距離、角度資訊。不同場景下的目標數量是不一樣的,所以不能使用固定的陣列來進行儲存,使用陣列太大時浪費空間,太小是又擔心不能正確儲存資訊。所以建議使用結構體巢

1263 STL map和結構使用。

例題:HDU - 1263 夏天來了~~好開心啊,呵呵,好多好多水果~~ Joe經營著一個不大的水果店.他認為生存之道就是經營最受顧客歡迎的水果.現在他想要一份水果銷售情況的明細表,這樣Joe就可以很容易掌握所有水果的銷售情況了. Input 第一行正整數N(0<

NUC140 之共用結構

 共用體和結構體巢狀的情況最早見於NUC1XXX的庫函式,後來用的非常順手, 看下面的程式碼: typedef union { //定義一種共用體,它包含兩個成員,一個是8位的總的錯誤訊號(錯誤暫存器位元組1所用) uint8_t error_sampl

【C++ -> 容器初始化】結構複雜結構初始化

案例簡述 最近在設計資料結構時,資料之間較為複雜,資料結構如下: typedef struct tagDataInfo { long offs; // 索引 char name[20]; /

結構時的sizeof運算

如果結果體中的成員包括陣列或者其他結構體,在資料對齊時,要以結構體中最深層的基本資料型別為準。所謂結構體中最深層的基本資料型別是指:如果結構體中的成員為複雜資料型別,不應以複雜資料型別所佔空間作為資料對齊的標準,而應深入複雜資料型別內部,檢視其所包含的基本資料型別所佔空間。

c語言結構的對齊方式

1:在程式碼中有結構體巢狀的方式,又需要獲取每個變數的地址。那麼需要了解結構體巢狀和單一結構體的一些對齊方面的規則。2:對於嵌入式的裝置來說,對齊很重要,有些cpu不支援不對齊的訪問方式,有的cpu支援,只是效率上會降低。3:arm中預設編譯的時候會進行對齊。規則一:結構體中

C語言結構的前向宣告,以及結構const結構成員的問題

如果你在宣告一個結構體A時,要使用一個未宣告的結構體B時,該怎麼辦?如下: #include <stdio.h> typedef struct demo{     struct stu test;     const int test2;     int te

結構結構指標

struct和typedef struct 首先是結構體的定義格式分三塊來講述:  1 首先://注意在C和C++裡不同    在C中定義一個結構體型別要用typedef:    typedef struct Student    {    int a;   

C語言之結構一級指標和二級指標

指標是C語言的精華,也是c中最難的部分;為了鍛鍊和提高自己對指標的理解,特在結構體中巢狀一級指標和二級指標來加深對。 #include<stdio.h> #include <string.h> #include<stdlib.h&

C語言-結構指標及結構

C語言中結構體是一種構造型別,和陣列、基本資料型別一樣,可以定義指向該種類型的指標。結構體指標的定義類似其他基本資料型別的定義,格式如下 struct 結構體名 * 指標名; 比如: struct person{char[20] name; int age;};//先定義一

結構二級指標

#include <stdio.h> #include <stdlib.h> #include <

C語言:Struct之結構陣列以及結構

一、結構陣列為什麼要使用結構陣列?舉個例子來說,假如我們定義了一個結構體book,顯然每一本書都可以用一個book型別的結構體來描述。要描述兩本書就需要用兩個這樣的結構變數,以此類推,如果我們要處理10本,100本,1000本...我們難道要一個一個定義嗎?我們想到陣列這種資

java 陣列與連結串列的使用(陣列連結串列--資料結構)

用處:連結串列陣列一般用於在不借用資料庫的情況下,對於大量資料的臨時儲存,來實現快速查詢的功能。 巢狀實現思想:上一篇中已經講了連結串列的建立和操作,借用上一篇中的部分來進行說明。上一篇中的類LinkList 是連結串列類,類中有對連結串列的各種操作,要把連結串列和陣列聯絡

go操作json,注意json的陣列

package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct struct { Host string `json:"host"` Port