您的位置:首页 > 编程语言 > Go语言

go 语言学习笔计之结构体

2015-07-10 10:57 741 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: