Hi, Do you know what infinite recursion is ? fmt.String use your String method
see https://play.golang.org/p/jeOilZW7JU On Thursday, September 1, 2016 at 11:59:12 AM UTC+3, Muhammad Shulhan wrote: > > Dear all, > > I will describe the problem step by step, please bear with me. > > Lets take a look at first example , > > package main >> >> import ( >> "fmt" >> ) >> >> type Slices []string >> >> func (sl *Slices) String() string { >> // OK >> return fmt.Sprint(sl) >> } >> >> func main() { >> var slices Slices >> >> fmt.Print("slices:", slices) >> } >> > > > Run: https://play.golang.org/p/Cjb0xCVaCC > Output: > > slices:[] >> > > Let change String() return to fmt.Sprint(*sl). > > Run: https://play.golang.org/p/St6TyltA56 > Output: > > slices:[] >> > > Using the above prototype lets build a flag that parse Slices. Here is the > code that return without stack overflow, > > package main >> >> import ( >> "flag" >> "fmt" >> ) >> >> type Slices []string >> >> func (sl *Slices) String() string { >> return fmt.Sprint(*sl) >> } >> >> func (sl *Slices) Set(vv string) error { >> // STUB for clarity >> return nil >> } >> >> func main() { >> var sl Slices >> flag.Var(&sl, "slices", "Test parsing slice flag.") >> flag.Parse() >> >> fmt.Printf("slices: %s\n", sl) >> } > > > Run: https://play.golang.org/p/Sol4C8hRk7 > Output: > > slices: [] >> > > Last one, lets change the String return to "fmt.Sprint(sl)". > > Run: https://play.golang.org/p/550Krvim77 > Output: > > runtime: goroutine stack exceeds 250000000-byte limit >> > fatal error: stack overflow >> > > Question: is this a bug? If it is I would report one. > > PS: > > Previous discussion that I found mentioning the same problem: > > * > https://groups.google.com/forum/#!searchin/golang-nuts/fmt.Sprint|sort:relevance/golang-nuts/jJ72z0Ssahc/FDwArwNCiw4J > -- 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 golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.