【go】字符串切片与字符串出入数据库转化

文章目录

    • 需求
    • 代码
      • 入库
      • 出库

需求

  1. 将请求数据存入数据库
  2. 与从数据库读取数据返回

请求结构体

type NoticegroupsCreateReq struct {
	Name      string   `json:"name" binding:"required"`
	UserIds   []string `json:"user_ids"  binding:"required"`
}

数据库类型

类型
name varchar
user_ids longtext

返回结构体

type NoticegroupsCreateReq struct {
	Name      string   `json:"name" binding:"required"`
	UserIds   []string `json:"user_ids"  binding:"required"`
}

代码

入库

// []string -> string   []userIds -> ids

// 此时输出一下将要入口的数据,待转化数据
fmt.Println(req.UserIds)
// [31 62 32 44 33]

userIds, err := json.Marshal(req.UserIds)
ids := string(userIds)

fmt.Println(string(userIds))
// ["31","62","32","44","33"]

出库

// string -> []string  noticegroup.UserIds -> []userId

// 此时输出一下从数据库直接读到的数据,待转化数据
fmt.Println("s:",noticegroup.UserIds)
// s ="[\"31\"", "\"62\"","\"32\"","\"44\"","\"33\"]"

// 去掉字符串两边的方括号
noticegroup.UserIds = strings.Trim(noticegroup.UserIds, "[]")
// 按逗号拆分字符串
userId := strings.Split(noticegroup.UserIds, ",")
// 去掉每个字符串两边的引号和空格
for i := 0; i < len(userId); i++ {
	userId[i] = strings.Trim(userId[i], "\" ")
}

fmt.Println(userId)
// [31 62 32 44 33]

历程

请求 转化 存储 返回
[31 62] [“31”,“62”] "[“31"”, ““62"”]” [31 62]

你可能感兴趣的:(go,golang)