golang interfacearg 代码
文件路径:/test/typeparam/interfacearg.go
/ run
/ Copyright 2021 The Go Authors. All rights reserved.
/ Use of this source code is governed by a BSD-style
/ license that can be found in the LICENSE file.
package main
type I interface{}
type _S[T any] struct {
x *T
}
/ F is a non-generic function, but has a type _S[I] which is instantiated from a
/ generic type. Test that _S[I] is successfully exported.
func F() {
v := _S[I]{}
if v.x != nil {
panic(v)
}
}
/ Testing the various combinations of method expressions.
type S1 struct{}
func (*S1) M() {}
type S2 struct{}
func (S2) M() {}
func _F1[T interface{ M() }](t T) {
_ = T.M
}
func F2() {
_F1(&S1{})
_F1(S2{})
_F1(&S2{})
}
func main() {
F()
F2()
}