Go类型的代码生成/语法表示

时间:2016-05-11 08:23:01

标签: go syntax

在Go std lib中,有一些方法可以将对象打印成Go-Syntax表示,例如,这里是如何打印一个值,

https://play.golang.org/p/hztlPEf1If

有没有办法转储类型的定义?如果不是,那么停止使用此功能背后的挑战是什么。

1 个答案:

答案 0 :(得分:0)

我写了一些反射函数,可能对你有帮助。请检查:

package main

import (
    "fmt"
    "reflect"
)

type S struct {
    A string
    B int
    c bool
    d float64
    e struct {
          f int
      }
}

func main() {
    var s S
    MagicPrint(&s)
}

func MagicPrint(t interface{}) {
    typeOfT := reflect.TypeOf(t).Elem()
    fmt.Println("type", typeOfT.Name(), " struct {")

    for i := 0; i < typeOfT.NumField(); i++ {
        f := typeOfT.Field(i)
        fmt.Printf("%s %s\n", f.Name, f.Type)
    }
    fmt.Println("}")
}

签入Go Playground