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 [email protected].
For more options, visit https://groups.google.com/d/optout.