github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/11_reflect/face/main.go (about) 1 package main 2 3 type Duck interface { 4 Quack() 5 } 6 7 type Cat struct { 8 Name string 9 _ [0]byte 10 } 11 12 // 禁止 Quack 方法的内联编译 13 //go:noinline 14 func (c *Cat) Quack() { 15 println(c.Name + " meow") 16 } 17 18 // 得到汇编代码的方式 19 // go tool compile -S -l -N main.go > s.txt; 20 // go tool compile -N -l main.go; 21 // go build -gcflags -S main.go 22 func main() { 23 var c Duck = &Cat{Name: "draven"} 24 switch c.(type) { 25 case *Cat: 26 cat := c.(*Cat) 27 cat.Quack() 28 } 29 }