Go 泛型

140 阅读1分钟

例子

泛型在Go1.18版本后才能使用

package main

import (
   "encoding/json"
   "fmt"
   "log"
)

func JsonStrToModel[T interface{}](dataStr string) (T, error) {
   t := new(T)
   err := json.Unmarshal([]byte(dataStr), t)
   if err != nil {

      fmt.Printf("Json串转化为Map失败,异常:%s\n", err)
      return *t, err
   }
   return *t, err
}

type Student1 struct {
   Name   string
   Age    int
   Skills []string
}

func main() {
   jsonStr := "{"name":"小名","age":12}"
   model, err := JsonStrToModel[Student1](jsonStr)
   if err != nil {
      log.Println(err.Error())
   }
   log.Println(model.Name)
}

打印

2022/04/25 16:20:06 小名

扩展链接

go 泛型简明教程

使用Go 1.18泛型对Gorm进行分页封装