为什么go插入额外的汇编代码以进行类型转换?

I expected that type conversion in golang is just to get the code compiled and nothing happens at the runtime. But the following type conversion in golang generates some assembly code.

package main

import (
    "fmt"
)

type mystring string

type MyString interface {
    get() string
}

func (self mystring) get() string {
    return string(self)
}

func main() {
    x := newDString("hai")
    str := convertToString(x)
    fmt.Println("Ans:  ", str)
}

func newDString(str string) MyString {
    return mystring(str)
}

func convertToString(input MyString) string {
    return string(input.(mystring))
}

In the above code, I have a new type mystring which is just an another name of the built-in type string. I expected that only the compiler uses this information and nothing gets passed to runtime. I mean, I expected that converting mystring to string (and vice versa) must take no processor cycles. But when I did go build -gcflags -S delete.go > test.s on my code, I see the following assembly code involved in the type conversion. What do these assembly codes do?

"".convertToString t=1 size=122 args=0x20 locals=0x20
    0x0000 00000 (/Users/deepak-3207/delete.go:27)  TEXT    "".convertToString(SB), $32-32
    0x0000 00000 (/Users/deepak-3207/delete.go:27)  MOVQ    (TLS), CX
    0x0009 00009 (/Users/deepak-3207/delete.go:27)  CMPQ    SP, 16(CX)
    0x000d 00013 (/Users/deepak-3207/delete.go:27)  JLS 115
    0x000f 00015 (/Users/deepak-3207/delete.go:27)  SUBQ    $32, SP
    0x0013 00019 (/Users/deepak-3207/delete.go:27)  MOVQ    BP, 24(SP)
    0x0018 00024 (/Users/deepak-3207/delete.go:27)  LEAQ    24(SP), BP
    0x001d 00029 (/Users/deepak-3207/delete.go:27)  FUNCDATA    $0, gclocals·c55e845a0a62e9baae6c740db5a20866(SB)
    0x001d 00029 (/Users/deepak-3207/delete.go:27)  FUNCDATA    $1, gclocals·69c1753bd5f81501d95132d08af04464(SB)
    0x001d 00029 (/Users/deepak-3207/delete.go:28)  MOVQ    "".input+40(FP), AX
    0x0022 00034 (/Users/deepak-3207/delete.go:28)  TESTQ   AX, AX
    0x0025 00037 (/Users/deepak-3207/delete.go:28)  JEQ $0, 43
    0x0027 00039 (/Users/deepak-3207/delete.go:28)  MOVQ    8(AX), AX
    0x002b 00043 (/Users/deepak-3207/delete.go:27)  LEAQ    type."".mystring(SB), CX
    0x0032 00050 (/Users/deepak-3207/delete.go:28)  CMPQ    CX, AX
    0x0035 00053 (/Users/deepak-3207/delete.go:28)  JNE $0, 87
    0x0037 00055 (/Users/deepak-3207/delete.go:28)  MOVQ    "".input+48(FP), AX
    0x003c 00060 (/Users/deepak-3207/delete.go:28)  MOVQ    (AX), CX
    0x003f 00063 (/Users/deepak-3207/delete.go:28)  MOVQ    8(AX), AX
    0x0043 00067 (/Users/deepak-3207/delete.go:28)  MOVQ    CX, "".~r1+56(FP)
    0x0048 00072 (/Users/deepak-3207/delete.go:28)  MOVQ    AX, "".~r1+64(FP)
    0x004d 00077 (/Users/deepak-3207/delete.go:28)  MOVQ    24(SP), BP
    0x0052 00082 (/Users/deepak-3207/delete.go:28)  ADDQ    $32, SP
    0x0056 00086 (/Users/deepak-3207/delete.go:28)  RET
    0x0057 00087 (/Users/deepak-3207/delete.go:28)  MOVQ    AX, (SP)
    0x005b 00091 (/Users/deepak-3207/delete.go:28)  MOVQ    CX, 8(SP)
    0x0060 00096 (/Users/deepak-3207/delete.go:28)  LEAQ    type."".MyString(SB), AX
    0x0067 00103 (/Users/deepak-3207/delete.go:28)  MOVQ    AX, 16(SP)
    0x006c 00108 (/Users/deepak-3207/delete.go:28)  PCDATA  $0, $1
    0x006c 00108 (/Users/deepak-3207/delete.go:28)  CALL    runtime.panicdottype(SB)
    0x0071 00113 (/Users/deepak-3207/delete.go:28)  UNDEF
    0x0073 00115 (/Users/deepak-3207/delete.go:28)  NOP
    0x0073 00115 (/Users/deepak-3207/delete.go:27)  PCDATA  $0, $-1
    0x0073 00115 (/Users/deepak-3207/delete.go:27)  CALL    runtime.morestack_noctxt(SB)
    0x0078 00120 (/Users/deepak-3207/delete.go:27)  JMP 0