go 語言學習筆計之結構體

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

go 語言中的結構體方法

結構體名稱的大小寫有著不同的意義: 小寫表示不能被別的包訪問

package mainimport "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 ticketimport (    "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);}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.