golang中嵌套结构体赋值

问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

package service

import (
    "encoding/xml"
    "fmt"
    "os"
    "testing"
)


type serverIP struct{
    IPV4 string
    IPV6 string
}
type server struct{
    ServerName string
    ServerIPs []serverIP
}
type Servers struct {
    Version string `xml:"version,attr"`
    Svs []server `xml:"data>server"`
}
func TestBuildNet(t *testing.T) {
    ip:=new(serverIP)
    ip.IPV4="127.0.0.1"
    ip.IPV6="wewewew"
    Server:=new(server)
    Server.ServerName="GLEKE"

    Server.ServerIPs=append(Server.ServerIPs,serverIP{"127.0.0.1","WWWWW"})
    Server.ServerIPs=append(Server.ServerIPs,serverIP{"127.0.0.2", "WWWWWSDFD"})

    v := &Servers{Version : "1"}


    output, err := xml.MarshalIndent(v,"  ", "    ")
    if err != nil{
        fmt.Printf("error : %v\n", err)
    }
    os.Stdout.Write([]byte(xml.Header)) //输出预定义的xml头  <?xml version="1.0" encoding="UTF-8"?>
    os.Stdout.Write(output)

}

你期待的结果是什么?实际看到的错误信息又是什么?

如何正确对嵌套的结构体赋值,生成的XML如何转换为string

阅读 7.6k
1 个回答
Server:=server{}
    Server:=server{}
    Server.ServerName="GLEKE"

    Server.ServerIPs=append(Server.ServerIPs,serverIP{"127.0.0.1","WWWWW"})
    Server.ServerIPs=append(Server.ServerIPs,serverIP{"127.0.0.2", "WWWWWSDFD"})

    a := []server{Server}

    v := Servers{Version : "1",Svs:a}


    output, err := xml.MarshalIndent(v,"  ", "    ")
    if err != nil{
        fmt.Printf("error : %v\n", err)
    }
    os.Stdout.Write([]byte(xml.Header)) //输出预定义的xml头  <?xml version="1.0" encoding="UTF-8"?>
    os.Stdout.Write(output)
    
    fmt.Println(string(output))

new() 返回的是一个指针
然后你代码里 根本就没有放svs里放 []server
output 是一个 []byte 转换成string 只需要 string(output)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题