Perhaps https://github.com/kortschak/utter might suit your needs?
On Mon, 15 Aug 2022, at 4:07 PM, John wrote: > Hey axel, > > I recognize the problem space you are discussing. There are a couple > strategies I could implement to try and solve the problems. And I'm not 100% > sure you can solve all of them. But I certainly don't want to jump down the > rabbit hole of reflection myself if I don't have to. So I'm looking for a > package that has attempted to do this. I'd certainly take something that > can't handle every case. > > So far my googlefoo hasn't found the key words that differentiate this from > pretty printing, or this type of package doesn't exist. > > Thanks for your response axel. > > > > On Monday, August 15, 2022 at 7:53:16 AM UTC-7 [email protected] > wrote: >> I don't believe this is possible, in general. For example, consider >> >> type S struct { >> A *int >> B *int >> } >> var x S >> x.A = new(int) >> x.B = x.A >> >> There is no single expression for the value of x. Or >> >> type P *P >> x := new(P) >> *x = x >> >> Then you have values which represent more than just their plain memory >> resources. For example, an *os.File - restoring that would not give you the >> same thing. >> >> There's lots of design space here and I don't think you can solve it in full >> generality. So, at the very least, you have to be very deliberate about what >> you want and what you are willing to give up. >> >> But. Maybe someone else has suggestions for a library doing an approximation >> of this you'd like better. >> >> >> >> On Mon, Aug 15, 2022 at 4:42 PM John <[email protected]> wrote: >>> Hey axel, >>> >>> Thanks for the reply, but unfortunately not. Because that is going to >>> simply print pointer values out. I want it to unwind all of that (and >>> handle the difficulty of recursive references). I want to be able to take >>> what is printed and simply paste it into a file assigned to a variable, add >>> the needed imports and have it compile. >>> On Monday, August 15, 2022 at 7:34:08 AM UTC-7 [email protected] >>> wrote: >>>> Does fmt.Printf("%#v", v) do what you want? >>>> >>>> >>>> On Mon, Aug 15, 2022 at 4:27 PM John <[email protected]> wrote: >>>>> I know we have plenty of pretty printing out there, but i'm looking for a >>>>> package that can print the Go representation of a Struct out to screen. >>>>> >>>>> So given: >>>>> >>>>> var x := &myStruct{ >>>>> A: "hello" >>>>> } >>>>> >>>>> someLib.Print(x) >>>>> >>>>> I get: >>>>> >>>>> &myStruct{ >>>>> A: "hello" >>>>> } >>>>> >>>>> I'm sure someone has used reflection to do this and figured out how they >>>>> want to deal with recursive pointers, so don't want to go recreate the >>>>> wheel here. >>>>> >>>>> Thanks. >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google Groups >>>>> "golang-nuts" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send an >>>>> email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/golang-nuts/f4fa3f7b-318e-407b-96ef-16102db1e037n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/golang-nuts/f4fa3f7b-318e-407b-96ef-16102db1e037n%40googlegroups.com?utm_medium=email&utm_source=footer>. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/2029ba81-dbf5-44c2-ac9f-228dcb7837f4n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/golang-nuts/2029ba81-dbf5-44c2-ac9f-228dcb7837f4n%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/0e2af167-4bad-49a1-8a12-e5218204b47fn%40googlegroups.com > > <https://groups.google.com/d/msgid/golang-nuts/0e2af167-4bad-49a1-8a12-e5218204b47fn%40googlegroups.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/bf70fe87-7d83-4b28-9401-3ef846def9be%40www.fastmail.com.
