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.