go reflect的工程使用

在实际工程中,虽然使用reflect会影响性能并且降低代码的可读性,但是reflect能做到代码的动态性和灵活性,因此也被工程上广泛使用,接下里列举几个reflect的应用示例

1. 实现通用的数据序列化和反序列化

package main

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

type Person struct {
   
    Name string
    Age  int
}

func serialize(obj interface{
   }) ([]byte, error) {
   
    value := reflect.ValueOf(obj)
    if value.Kind()!= reflect.Struct {
   
        return nil, fmt.Errorf("input is not a struct")
    }

    data := make(map[string]interface{
   })
    typeOfObj := value.Type()
    for i := 0; i < value.NumField(); i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值