go 语言学习笔计之结构体

go 语言中的结构体方法

结构体名称的大小写有着不同的意义: 小写表示不能被别的包访问

package main
import "fmt"

type Rect struct {
	width,height int
}

func (r *Rect) area() int {
	return r.width*r.height;
}

func main() {

	r:=Rect{width:10,height:10}
	fmt.Println(r.area());

	rp:=&r;
    fmt.Println(rp.area());
}

使用结构体来解析xml

首先我们看xml的格式,对于属性(attr)和节点使用是不一样的,

具体的使用方式如下

<bulkPmMrDataFile>
  <fileHeader fileFormatVersion="1.0.3" reportTime="2015-06-18T10:45:00.178+08:00"   startTime="2015-06-18T10:30:00.178+08:00" endTime="2015-06-18T10:45:00.178+08:00" period="0"/>
</bulkPmMrDataFile>
package ticket
import (
    "path"
    "io/ioutil"
    "fmt"
    "encoding/xml"
    "os"
)

type BulkPmMrDataFile struct {
    FileHeader FileHeader `xml:"fileHeader"`
    ENB ENB `xml:"eNB"`
}

type FileHeader struct {
    FileFormatVersion string `xml:"fileFormatVersion,attr"`
    ReportTime string `xml:"reportTime,attr"`
    StartTime string `xml:"startTime,attr"`
    EndTime string `xml:"endTime,attr"`
    Period string `xml:"period"`
}

type ENB struct {
    Id string `xml:"id,attr"`
    UserLabel string `xml:"userLabel,attr"`
    Measurement Measurement `xml:"measurement"`
}

type Measurement struct {
    Smr string `xml:"smr"`
    Object Object `xml:"object"`
}

type Object struct {
    Id string `xml:"id,attr"`
    MmeUeS1apId string `xml:"MmeUeS1apId,attr"`
    MmeCode string `xml:"MmeCode"`
    TimeStamp string `xml:"TimeStamp"`
    V string `xml:"v"`
}

func CheckEror(err error) {
    if err != nil {
        fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
        os.Exit(1)
    }
}

func main() {
    filename := path.Join("input", "xxxx.xml")
    content, err := ioutil.ReadFile(filename)

    fmt.Println(filename);
    if ( err!=nil) {
        fmt.Println("open file err")
        CheckEror(err)
    }

    var result BulkPmMrDataFile
    err=xml.Unmarshal(content, &result)
    if (err!=nil) {
        CheckEror(err)
    }
    fmt.Println("here");
    fmt.Println("report time:"+result.FileHeader.ReportTime);
    fmt.Println("enb id Object.Id :"+result.ENB.Measurement.Object.V);
}
时间: 2024-11-08 11:57:45

go 语言学习笔计之结构体的相关文章

C语言学习笔记:22_结构体

/* * 22.结构体.c * * Created on: 2015年7月9日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> /** * 结构体:对共性数据的封装 * 结构体有点使用面向对象的思想,对一类东西的共性进行封闭,以便使用. * * 定义结构体: * //1>定义结构体,也可以定义在函数中(全局与局部的结构体) struct Person{ char *name;// 字符串 int age; d

C语言中的系统时间结构体类型

在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒:由函数time()获取: 该类型定义在头文件 /usr/include/sys/time.h 中: #define _TIME_T       typedef   long   time_t;             #endif 函数定义:time_t   tim

c语言学习之 程序基本结构

一个最基本的C程序由五个部分组成: 头文件 (Preprocessor commands) 函数 (function) 变量 (variable) 语句块 (statement 和 expression) 注释 (comments) 例如: #include <stdio.h> int main(){ /*my first c programming*/ printf("hello,world\n"); return 0; } c语言学习之 程序基本结构,码迷,mamico

菜鸟学习-C语言函数参数传递详解-结构体与数组

C语言中结构体作为函数参数,有两种方式:传值和传址. 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下,涉及到结构体参数的拷贝,程序空间及时间效率都会受到影响. 例子: typedef struct tagSTUDENT{ char name[20]; int age; }STUDENT; void fun(STUDENT stu) { printf("stu.name=%s,stu.age=%d/

C语言--&gt;(十四)结构体、宏、编译

知识点: 1.结构体 struct 2.typedef关键字 3.宏的定义 4.宏与函数的区别 5.文件包含和多文件编译 6.条件编译 ===========================结构体 思考:如果现在希望保存一个学生的信息,姓名,身高,年龄,地址,该如何保存 char name[64]; float height; int age; char addr[64]; 1.什么是结构体 struct 结构体指的是一种数据结构,是c语言中复合数据类型的一 种多种不同数据类型的集合 2.结构体

「C语言」「例题」结构体与共用体

本篇收集<C语言程序设计教程>第九章“结构体与共用体”的所有例题. 1 #include <stdio.h> 2 3 /*输入一个学生的基本信息, 4 包括学号.姓名.性别.年龄.出生日期.三门成绩, 5 输出该学生的基本信息和平均成绩*/ 6 7 struct date 8 { 9 int year;/* 年份 */ 10 int month;/* 月份 */ 11 int day; /* 日期 */ 12 }; 13 14 struct student 15 { 16 char

Swift语法学习之 类和结构体

类和结构体 本页包含内容: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合(collection)类型的赋值与复制行为 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意: 通常一个类的实例被称为对象.然而在Swift 中,类和结构体的关系要比在其他语言中更加的密切,本章中所讨论的大部分功能都可以用在类和结构体上.因此,我们会主要使

C++ c++与C语言的区别(空结构体)

//区别⑨:空结构体声明(C++版本) #include<iostream> using namespace std; struct A{}; class B{}; void main(){ printf("C++中空结构体内存大小是%d\n", sizeof(A));//打印 1 printf("C++中空类内存大小是%d\n", sizeof(B)); //打印1 //在C++中,空结构体,空类都在内存中占一个字节大小的内存空间 system(&qu

c的详细学习(10)结构体与共用体的学习(二)

在c语言中,结构体数据类型与共用体数据类型都属于构造类型.共用体与结构体数据类型在定义上十分相似,但它们在存储空间的占用分配上有本质的区别.结构体变量是各种类型数据的集合,各成员占据不同的存储空间,而共用体变量的所有成员占用相同的存储空间,在某一时刻只有一个成员起作用. (1)共用体类型的定义 定义共用体类型的一般形式: union 共用体类型名 { 数据类型  成员名1; 数据类型  成员名2; 数据类型  成员名3; ...... }; 以上定义了一个名为data的共用体类型.它说明该类型由