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.

Reply via email to