2016-05-11 3 views
0

В Go станд Lib есть ты какой-нибудь способ довольно объекта печати в представлении Go-синтаксиса, например, here'd как довольно напечатать значение,генерации кода типа Go

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

так есть способ сбрасывать определение тип? Если нет, то каковы проблемы, стоящие перед тем, чтобы прекратить эту функцию.

+1

ли вы имеете в виду, как демпинг STRUCT и получить все поля с именем, а также тип поля? Это можно сделать, используя отражение. – Apin

+0

@ Апин должен быть да. забыл упомянуть, мои сценарии пытаются генерировать код на основе существующего типа, большую часть времени, структуры. не уверен, если какой-либо удобный способ сделать это, я чувствую, что использование рефлекса возможно, но также и существенные детали для обработки. Поэтому мне интересно, не пропустил ли я какой-либо существующий объект. –

+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, выполняющий эту работу в более полной путь. –

Смежные вопросы