教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang interface{}转换成struct结构体的两种方法

golang interface{}转换成struct结构体的两种方法

发布时间:2023-01-27   编辑:jiaochengji.com
教程集为您提供golang interface{}转换成struct结构体的两种方法等资源,欢迎您收藏本站,我们将为您提供最新的golang interface{}转换成struct结构体的两种方法资源

1.使用断言,强制转换

 p, ok := (Value).(user)
22     if ok {
23         fmt.Println("id:"   p.Id)
24         fmt.Println("name:"   p.Name)
25     } else {
26         fmt.Println("can not convert")
27     }

2.json序列化

resByre,resByteErr:=json.Marshal(ResponseData)
	if resByteErr != nil {
		c.Data(utils.ErrorResult("读取信息失败"   resByteErr.Error()))
		return
	}
	var newData MnConfig
	jsonRes:=json.Unmarshal(resByre,&newData)
	if jsonRes != nil {
		c.Data(utils.ErrorResult("读取信息失败"   jsonRes.Error()))
		return
	}

实例:

package main

import (
	"encoding/json"
	"fmt"
)

type user struct {
	Id int `json:"id"`
	Name string `json:"name"`
}


func main() {

	newUser:=user{
		Id:   1,
		Name: "杉杉",
	}

	var newInterface1 interface{}

	//第一种使用interface
	newInterface1=newUser
	fmt.Printf("使用interface: %v",newInterface1.(user))

	//第二种使用json
	var newInterface2 interface{}
	newInterface2=newUser
	resByre, resByteErr := json.Marshal(newInterface2)
	if resByteErr != nil {
		fmt.Printf("%v",resByteErr)
		return
	}
	var newData user
	jsonRes := json.Unmarshal(resByre, &newData)
	if jsonRes != nil {
		fmt.Printf("%v",jsonRes)
		return
	}
	fmt.Printf("使用 json: %v",newData)

}

结果: 

到此这篇关于“golang interface{}转换成struct结构体的两种方法”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
活学活用golang的反射机制
golang学习之结构体,方法,接口
golang 初始化并赋值_Golang | 既是接口又是类型,interface是什么神仙用法?
Golang interface 接口要点梳理
golang反射——执行函数
Golang使用reflect操作struct
golang 面试题(十三)interface内部结构和nil详解
浅析Go语言的Interface机制
interface作为struct field,谈谈golang结构体中的匿名接口
真的理解go interface了吗?

[关闭]
~ ~