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

标签 go syntax

在 Go std lib 中,有一些方法可以将对象漂亮地打印到 Go 语法表示中,例如,这里是如何漂亮地打印一个值,

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

那么有什么方法可以转储类型的定义吗?如果否,停止拥有此功能背后的挑战是什么。

最佳答案

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

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

关于go - Go类型的代码生成/语法表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37156922/

相关文章:

go - 不需要的 Glide 导入

go - 如何在不阻塞 channel 的情况下用股票报告统计数据?

ios - 如何访问 Cocoa Touch 类中 UIStepper 的值

syntax - 如何使用jq查询数字子键的值

java - 为什么在访问级别关键字之后指定通用

arrays - GOLANG 从 byte slice 中修剪前导字符,直到遇到某个特定字符

go - golang 1.7.3 中 gzip Reader 的行为变化(与 1.6.3 相比)

string - 如何查看映射键是否包含某些字符串?

python - wxPython 语法高亮小部件

Javascript 符号 : () => { return 5; }