Running your
http://play.golang.org/p/61XhC3wBE_ in the playground gives:
----
runtime: goroutine stack exceeds 250000000-byte limit
fatal error: stack overflow
runtime stack:
runtime.throw(0x1b4980, 0x5be60)
/tmp/sandbox/go/src/pkg/runtime/panic.c:471 +0xa0
runtime.newstack()
/tmp/sandbox/go/src/pkg/runtime/stack.c:295 +0x440
runtime.morestack()
/tmp/sandbox/go/src/pkg/runtime/asm_amd64p32.s:207 +0x80
goroutine 1 [stack split]:
runtime.markallocated(0x149fcbd0, 0x90, 0x0, 0x0)
/tmp/sandbox/go/src/pkg/runtime/mgc0.c:2331 fp=0xefda20e0
runtime.mallocgc(0x90, 0xf47a0, 0x0, 0xffffffff)
/tmp/sandbox/go/src/pkg/runtime/malloc.goc:101 +0x200 fp=0xefda2128
runtime.new(0xf47a0, 0x0, 0x0, 0x0)
/tmp/sandbox/go/src/pkg/runtime/malloc.goc:705 +0x40 fp=0xefda2140
fmt.func·001(0x1052f280, 0x0)
/tmp/sandbox/go/src/pkg/fmt/print.go:161 +0x40 fp=0xefda2158
fmt.(*cache).get(0x1052f280, 0x0, 0x0, 0x0)
/tmp/sandbox/go/src/pkg/fmt/print.go:149 +0x80 fp=0xefda2180
fmt.newPrinter(0x1bb9b8, 0x0)
/tmp/sandbox/go/src/pkg/fmt/print.go:165 +0x40 fp=0xefda21a8
fmt.Sprintf(0x100238, 0xa, 0xefda21fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:234 +0x40 fp=0xefda21d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda2218
fmt.(*pp).handleMethods(0x149fcb40, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda2268
fmt.(*pp).printArg(0x149fcb40, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda22a8
fmt.(*pp).doPrintf(0x149fcb40, 0x100238, 0xa, 0xefda247c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda2428
fmt.Sprintf(0x100238, 0xa, 0xefda247c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda2458
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda2498
fmt.(*pp).handleMethods(0x149fcab0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda24e8
fmt.(*pp).printArg(0x149fcab0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda2528
fmt.(*pp).doPrintf(0x149fcab0, 0x100238, 0xa, 0xefda26fc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda26a8
fmt.Sprintf(0x100238, 0xa, 0xefda26fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda26d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda2718
fmt.(*pp).handleMethods(0x149fca20, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda2768
fmt.(*pp).printArg(0x149fca20, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda27a8
fmt.(*pp).doPrintf(0x149fca20, 0x100238, 0xa, 0xefda297c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda2928
fmt.Sprintf(0x100238, 0xa, 0xefda297c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda2958
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda2998
fmt.(*pp).handleMethods(0x149fc990, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda29e8
fmt.(*pp).printArg(0x149fc990, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda2a28
fmt.(*pp).doPrintf(0x149fc990, 0x100238, 0xa, 0xefda2bfc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda2ba8
fmt.Sprintf(0x100238, 0xa, 0xefda2bfc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda2bd8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda2c18
fmt.(*pp).handleMethods(0x149fc900, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda2c68
fmt.(*pp).printArg(0x149fc900, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda2ca8
fmt.(*pp).doPrintf(0x149fc900, 0x100238, 0xa, 0xefda2e7c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda2e28
fmt.Sprintf(0x100238, 0xa, 0xefda2e7c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda2e58
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda2e98
fmt.(*pp).handleMethods(0x149fc870, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda2ee8
fmt.(*pp).printArg(0x149fc870, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda2f28
fmt.(*pp).doPrintf(0x149fc870, 0x100238, 0xa, 0xefda30fc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda30a8
fmt.Sprintf(0x100238, 0xa, 0xefda30fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda30d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda3118
fmt.(*pp).handleMethods(0x149fc7e0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda3168
fmt.(*pp).printArg(0x149fc7e0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda31a8
fmt.(*pp).doPrintf(0x149fc7e0, 0x100238, 0xa, 0xefda337c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda3328
fmt.Sprintf(0x100238, 0xa, 0xefda337c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda3358
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda3398
fmt.(*pp).handleMethods(0x149fc750, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda33e8
fmt.(*pp).printArg(0x149fc750, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda3428
fmt.(*pp).doPrintf(0x149fc750, 0x100238, 0xa, 0xefda35fc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda35a8
fmt.Sprintf(0x100238, 0xa, 0xefda35fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda35d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda3618
fmt.(*pp).handleMethods(0x149fc6c0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda3668
fmt.(*pp).printArg(0x149fc6c0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda36a8
fmt.(*pp).doPrintf(0x149fc6c0, 0x100238, 0xa, 0xefda387c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda3828
fmt.Sprintf(0x100238, 0xa, 0xefda387c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda3858
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda3898
fmt.(*pp).handleMethods(0x149fc630, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda38e8
fmt.(*pp).printArg(0x149fc630, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda3928
fmt.(*pp).doPrintf(0x149fc630, 0x100238, 0xa, 0xefda3afc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda3aa8
fmt.Sprintf(0x100238, 0xa, 0xefda3afc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda3ad8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda3b18
fmt.(*pp).handleMethods(0x149fc5a0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda3b68
fmt.(*pp).printArg(0x149fc5a0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda3ba8
fmt.(*pp).doPrintf(0x149fc5a0, 0x100238, 0xa, 0xefda3d7c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda3d28
fmt.Sprintf(0x100238, 0xa, 0xefda3d7c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda3d58
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda3d98
fmt.(*pp).handleMethods(0x149fc510, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda3de8
fmt.(*pp).printArg(0x149fc510, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda3e28
fmt.(*pp).doPrintf(0x149fc510, 0x100238, 0xa, 0xefda41fc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda3fa8
----- stack segment boundary -----
fmt.Sprintf(0x100238, 0xa, 0xefda41fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda41d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda4218
fmt.(*pp).handleMethods(0x149fc480, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda4268
fmt.(*pp).printArg(0x149fc480, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda42a8
fmt.(*pp).doPrintf(0x149fc480, 0x100238, 0xa, 0xefda447c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda4428
fmt.Sprintf(0x100238, 0xa, 0xefda447c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda4458
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda4498
fmt.(*pp).handleMethods(0x149fc3f0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda44e8
fmt.(*pp).printArg(0x149fc3f0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda4528
fmt.(*pp).doPrintf(0x149fc3f0, 0x100238, 0xa, 0xefda46fc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda46a8
fmt.Sprintf(0x100238, 0xa, 0xefda46fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda46d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda4718
fmt.(*pp).handleMethods(0x149fc360, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda4768
fmt.(*pp).printArg(0x149fc360, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda47a8
fmt.(*pp).doPrintf(0x149fc360, 0x100238, 0xa, 0xefda497c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda4928
fmt.Sprintf(0x100238, 0xa, 0xefda497c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda4958
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda4998
fmt.(*pp).handleMethods(0x149fc2d0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda49e8
fmt.(*pp).printArg(0x149fc2d0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda4a28
fmt.(*pp).doPrintf(0x149fc2d0, 0x100238, 0xa, 0xefda4bfc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda4ba8
fmt.Sprintf(0x100238, 0xa, 0xefda4bfc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda4bd8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda4c18
fmt.(*pp).handleMethods(0x149fc240, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda4c68
fmt.(*pp).printArg(0x149fc240, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda4ca8
fmt.(*pp).doPrintf(0x149fc240, 0x100238, 0xa, 0xefda4e7c, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda4e28
fmt.Sprintf(0x100238, 0xa, 0xefda4e7c, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda4e58
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda4e98
fmt.(*pp).handleMethods(0x149fc1b0, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda4ee8
fmt.(*pp).printArg(0x149fc1b0, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda4f28
fmt.(*pp).doPrintf(0x149fc1b0, 0x100238, 0xa, 0xefda50fc, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:1182 +0x1dc0 fp=0xefda50a8
fmt.Sprintf(0x100238, 0xa, 0xefda50fc, 0x1, 0x1, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:235 +0x80 fp=0xefda50d8
main.(*MyType).String(0x10500168, 0xec360, 0x10500168, 0x78)
/tmpfs/gosandbox-bace1322_bfe36646_1de5b35c_888fb26a_db85992b/prog.go:21
+0x140 fp=0xefda5118
fmt.(*pp).handleMethods(0x149fc120, 0x78, 0x8dc90000, 0x0, 0xd0100, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:722 +0x660 fp=0xefda5168
fmt.(*pp).printArg(0x149fc120, 0xec360, 0x10500168, 0x78, 0x0, ...)
/tmp/sandbox/go/src/pkg/fmt/print.go:813 +0x4c0 fp=0xefda51a8
goroutine 2 [syscall]:
runtime.notetsleepg(0xfeefdf88, 0x0, 0xf8475800, 0xd)
/tmp/sandbox/go/src/pkg/runtime/lock_sema.c:254 +0xa0
runtime.MHeap_Scavenger()
/tmp/sandbox/go/src/pkg/runtime/mheap.c:463 +0xc0
runtime.goexit()
/tmp/sandbox/go/src/pkg/runtime/proc.c:1394
created by runtime.main
/tmp/sandbox/go/src/pkg/runtime/proc.c:179
[process exited with non-zero status]
----
From the above the cyclic/recursive execution path can be seen and the
culprit (line 21) even gets red flagged ;-)
-j