Another approach.
marconi-mobile:deb mtj$ go build -gcflags="-S" ex.go
# command-line-arguments
--- prog list "Debug" ---
0000 (/Users/mtj/gocode/src/deb/ex.go:7) TEXT Debug+0(SB),$64-40
0001 (/Users/mtj/gocode/src/deb/ex.go:7) LOCALS ,$0
0002 (/Users/mtj/gocode/src/deb/ex.go:11) RET ,
--- prog list "main" ---
0003 (/Users/mtj/gocode/src/deb/ex.go:13) TEXT main+0(SB),$40-0
0004 (/Users/mtj/gocode/src/deb/ex.go:13) LOCALS ,$0
0005 (/Users/mtj/gocode/src/deb/ex.go:14) LEAQ go.string."Debugging off\n"+0(SB),BX
0006 (/Users/mtj/gocode/src/deb/ex.go:14) LEAQ (SP),BP
0007 (/Users/mtj/gocode/src/deb/ex.go:14) MOVQ BP,DI
0008 (/Users/mtj/gocode/src/deb/ex.go:14) MOVQ BX,SI
0009 (/Users/mtj/gocode/src/deb/ex.go:14) MOVSQ ,
0010 (/Users/mtj/gocode/src/deb/ex.go:14) MOVSQ ,
0011 (/Users/mtj/gocode/src/deb/ex.go:14) LEAQ 16(SP),DI
0012 (/Users/mtj/gocode/src/deb/ex.go:14) MOVQ $0,AX
0013 (/Users/mtj/gocode/src/deb/ex.go:14) STOSQ ,
0014 (/Users/mtj/gocode/src/deb/ex.go:14) STOSQ ,
0015 (/Users/mtj/gocode/src/deb/ex.go:14) STOSQ ,
0016 (/Users/mtj/gocode/src/deb/ex.go:14) CALL ,Debug+0(SB)
0017 (/Users/mtj/gocode/src/deb/ex.go:15) RET ,
--- prog list "init" ---
0018 (/Users/mtj/gocode/src/deb/ex.go:15) TEXT init+0(SB),$0-0
0019 (/Users/mtj/gocode/src/deb/ex.go:15) MOVBQZX initdone·+0(SB),AX
0020 (/Users/mtj/gocode/src/deb/ex.go:15) LOCALS ,$0
0021 (/Users/mtj/gocode/src/deb/ex.go:15) CMPB AX,$0
0022 (/Users/mtj/gocode/src/deb/ex.go:15) JEQ ,28
0023 (/Users/mtj/gocode/src/deb/ex.go:15) CMPB AX,$2
0024 (/Users/mtj/gocode/src/deb/ex.go:15) JNE ,26
0025 (/Users/mtj/gocode/src/deb/ex.go:15) RET ,
0026 (/Users/mtj/gocode/src/deb/ex.go:15) CALL ,runtime.throwinit+0(SB)
0027 (/Users/mtj/gocode/src/deb/ex.go:15) UNDEF ,
0028 (/Users/mtj/gocode/src/deb/ex.go:15) MOVB $1,initdone·+0(SB)
0029 (/Users/mtj/gocode/src/deb/ex.go:15) CALL ,fmt.init+0(SB)
0030 (/Users/mtj/gocode/src/deb/ex.go:15) MOVB $2,initdone·+0(SB)
0031 (/Users/mtj/gocode/src/deb/ex.go:15) RET ,
Main plays with registers then calls Debug which returns immediately. That's what the OP wants to avoid. Now try this
marconi-mobile:deb mtj$ go build -gcflags="-l -l -l -l -l -l -S" ex.go
# command-line-arguments
--- prog list "Debug" ---
0000 (/Users/mtj/gocode/src/deb/ex.go:7) TEXT Debug+0(SB),$64-40
0001 (/Users/mtj/gocode/src/deb/ex.go:7) LOCALS ,$0
0002 (/Users/mtj/gocode/src/deb/ex.go:11) RET ,
--- prog list "main" ---
0003 (/Users/mtj/gocode/src/deb/ex.go:13) TEXT main+0(SB),$64-0
0004 (/Users/mtj/gocode/src/deb/ex.go:13) LOCALS ,$0
0005 (/Users/mtj/gocode/src/deb/ex.go:14) LEAQ go.string."Debugging off\n"+0(SB),BX
0006 (/Users/mtj/gocode/src/deb/ex.go:14) MOVQ (BX),BP
0007 (/Users/mtj/gocode/src/deb/ex.go:14) MOVQ 8(BX),BP
0008 (/Users/mtj/gocode/src/deb/ex.go:15) RET ,
--- prog list "init" ---
0009 (/Users/mtj/gocode/src/deb/ex.go:15) TEXT init+0(SB),$0-0
0010 (/Users/mtj/gocode/src/deb/ex.go:15) MOVBQZX initdone·+0(SB),AX
0011 (/Users/mtj/gocode/src/deb/ex.go:15) LOCALS ,$0
0012 (/Users/mtj/gocode/src/deb/ex.go:15) CMPB AX,$0
0013 (/Users/mtj/gocode/src/deb/ex.go:15) JEQ ,19
0014 (/Users/mtj/gocode/src/deb/ex.go:15) CMPB AX,$2
0015 (/Users/mtj/gocode/src/deb/ex.go:15) JNE ,17
0016 (/Users/mtj/gocode/src/deb/ex.go:15) RET ,
0017 (/Users/mtj/gocode/src/deb/ex.go:15) CALL ,runtime.throwinit+0(SB)
0018 (/Users/mtj/gocode/src/deb/ex.go:15) UNDEF ,
0019 (/Users/mtj/gocode/src/deb/ex.go:15) MOVB $1,initdone·+0(SB)
0020 (/Users/mtj/gocode/src/deb/ex.go:15) CALL ,fmt.init+0(SB)
0021 (/Users/mtj/gocode/src/deb/ex.go:15) MOVB $2,initdone·+0(SB)
0022 (/Users/mtj/gocode/src/deb/ex.go:15) RET ,
Better -- no call to Debug. We still have the useless string in the text, the useless creation of addressability of it in registers, etc., but no call. Maybe the linker does some magic. I could not find this in the executable using gdb or ndisasm.