go devirt 源码
golang devirt 代码
文件路径:/test/devirt.go
// errorcheck -0 -d=ssa/opt/debug=1
package main
// Trivial interface call devirtualization test.
type real struct {
value int
}
func (r *real) Value() int { return r.value }
type Valuer interface {
Value() int
}
type indirectiface struct {
a, b, c int
}
func (i indirectiface) Value() int {
return i.a + i.b + i.c
}
func main() {
var r Valuer
rptr := &real{value: 3}
r = rptr
if r.Value() != 3 { // ERROR "de-virtualizing call$"
panic("not 3")
}
r = indirectiface{3, 4, 5}
if r.Value() != 12 { // ERROR "de-virtualizing call$"
panic("not 12")
}
}
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦