Golang 类型断言+反射+序列化
package main
import (
"encoding/json"
"fmt"
"reflect"
)
func main() {
// 定义一个接口值,该值实际上是一个int类型
var data interface{} = 123
// 使用反射获取接口值的类型和值
dataType := reflect.TypeOf(data)
dataValue := reflect.ValueOf(data)
// 类型断言:检查data是否为int类型
if dataType.Kind() == reflect.Int {
fmt.Println("data is an int")
}
// 将接口值序列化为JSON
jsonData, err := json.Marshal(data)
if err != nil {
fmt.Println("Error serializing data:", err)
return
}
// 输出序列化后的JSON字符串
fmt.Println("JSON representation of data:", string(jsonData))
}
这段代码首先定义了一个接口类型的变量data
,并赋值为一个整数。接着使用反射包中的reflect.TypeOf
和reflect.ValueOf
函数来获取data
的类型和值。然后通过reflect.Kind
函数检查data
是否为int
类型,这就是一个类型断言的例子。最后,代码使用json.Marshal
函数将data
序列化为JSON格式,并打印出来。这个过程展示了如何在Go语言中处理接口类型的数据,并根据其实际类型进行相应的操作。
评论已关闭