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()
}
} 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);
}

最新文章

  1. Go语言 字符串处理
  2. 2013长沙邀请赛A So Easy!(矩阵快速幂,共轭)
  3. [荐] jQuery取得select选择的文本与值
  4. Spring 作用域 scope
  5. iTunes - Forensic guys&#39; best friend
  6. java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。
  7. java条件选择学习
  8. 关于Git的stash命令
  9. ExtJS 4 类系统
  10. 【JS学习笔记】第一个JS效果——鼠标提示框
  11. input标签元素,value属性取值问题,赋值
  12. CentOS 7.3 minimal 开启网络服务
  13. spring cloud 入门系列二:使用Eureka 进行服务治理
  14. Android 访问assets下的文件
  15. 密码机制(PGP)
  16. 006-网页嵌入数据Data URI scheme
  17. Eclipse文件首部自动加 作者时间
  18. 51Nod:1086背包问题 V2
  19. ajax异步、同步问题,KindEditor ajax提交内容,ajax提交form表单 解决按两次的问题
  20. Extjs gridPanel 动态指定表头

热门文章

  1. 构建高可用Linux服务器二
  2. json字符串 与 json对象 的相互转换
  3. Android fragment 切换载入数据卡顿问题
  4. Asp.Net 之 二维码生成
  5. vue - 实例事件
  6. AppIcon尺寸
  7. hookup_2.10-0.2.3.jar包下载
  8. Tomcat日志、项目中的log4j日志、控制台——我的日志最后到底跑哪去了?
  9. Machine Learning:PageRank算法
  10. JavaScript-常用正则函数(适合忘记时看)