golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct

1.结构体struct

看这个文章,看一个struct

1.1 声明结构体

// student
type Student struct {
    Name string
    Age  uint64
}

// class
type Class struct {
    ClassNo       uint64
    ClassName     string
    Students      []Student //数组
    IsHonor       bool
}

1.2 初始化结构体 以及 传参

    // 初始化结构体的方法一:
    class := Class{
    	ClassNo:  302
        ClassName:	"三年级二班",
        Students:    students, // students变量
        IsHonor:    false,
    }
    key, err := t.Get(class) //普通
    func (s *SService) Get(class Class){  //普通
    }
    
    // 初始化结构体的方法二: 取地址
    class := &Class{
    	ClassNo:  302
        ClassName:	"三年级二班",
        Students:    students, // students变量
        IsHonor:    false,
    }
    key, err := t.Get(class) // 传的是个”地址“
    func (s *SService) Get(class *Class){ // 用”指针“接
    } 
    
	// 初始化结构体的方法三:
	class := Class{}
	class.ClassNo = 302
	class.ClassName = "三年级二班"
	class.Students = students
	class.IsHonor = false

2. 结构体数组、append

	var classOne Class
	var classList []Class
	for ....:取到值先赋给classOne,再用classList = append(classList, classOne)

3. 接口返回 含数组的结构体 常用写法

type RespData struct {
	Name  string `json:"name"`
	Age uint64 `json:"age"`
}

type JiekouResponse struct { 
	List []RespData `json:"list"` 
}

func (t *TController) SuggestGet(){
	res := &JiekouResponse{}
	res.List = []RespData{} // 定义数组
	
	
	s := service.NewTService(t.param)
	allData := s.GetAllData()
	
	var dataOne RespData
	for _, data := range allData { // 循环赋值
		dataOne.Name = data.Name
		dataOne.Age = data.Age
		res.List = append(res.List, dataOne) // 数组append给值
	}
}

json string转struct

type UserInfo struct {
	ParentNodeId  int64  `json:"parent_node_id"`
	NodeTypeId    uint32 `json:"node_type_id"`
	DimeNodeValue string `json:"dime_node_value"`
	CnName        string `json:"cn_name"`
	EnName        string `json:en_name"`
}

// 解析userInfolist:从json string到struct
	userinfoStr := req.Userinfolist // req.Userinfolist是个list,list里是非常多的json string [{"a":1,"b":2,"c":"3"},{},...]
	var userInfolist []*UserInfo
	if userinfoStr != "" {
		err := json.Unmarshal([]byte(userinfoStr), &userInfolist)
		fmt.Println("userInfolist:", userInfolist)
		fmt.Println(userInfolist[0].DimeNodeValue)
		if err != nil {
			return res, err
		}
	}

其他文章参考:golang结构体-对象和指针-函数赋予

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值