2016-05-11 46 views
0

在圍棋標準庫裏有一些方式來美化打印對象成細末語法表示,例如,here'd如何漂亮打印值,代碼生成/語法表示

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

有沒有什麼辦法可以轉儲定義類型?如果不是,那麼停止使用此功能面臨的挑戰是什麼。

+1

你的意思是像傾倒的結構體,並獲得與名和字段也類型的所有字段?它可以使用反射來完成。 – Apin

+0

@Apin應該是。忘了提及,我的場景正在嘗試基於現有類型(大部分時間,struct)來生成代碼。不知道是否有任何方便的做法,我覺得使用反射是可能的,但也是可以處理的重要細節。所以我想知道我是否錯過了現有的設施。 –

+0

更好的是在你的問題上提及什麼樣的輸入以及你想要的輸出。 – Apin

回答

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

+0

謝謝你的例子,我想我會去滾動自己的解決方案(基於^),因爲找不到任何現有的lib做這個工作的更完整辦法。 –