アサーション関数を作成してテストするときにジェネリックスを使用しようとしていますが、エラーが発生します一部の機能は使用できませんtestutilt を実装します (メソッドの型が間違っています...)
エラー。もしそうなら、以下のコードを機能させるにはどうすればよいですか?
package test_util import ( "fmt" "testing" ) type TestUtilT interface { Equals(TestUtilT) bool String() string } func Assert[U TestUtilT](t *testing.T, location string, must, is U) { if !is.Equals(must) { t.Fatalf("%s expected: %s got: %s\n", fmt.Sprintf("[%s]", location), must, is, ) } } type Some struct { } func (s *Some) Equals(other Some) bool { return true } func (s *Some) String() string { return "" } func TestFunc(t *testing.T) { Assert[Some](t, "", Some{}, Some{}) // Error: "Some does not implement TestUtilT (wrong type for method Equals...)" }
置き換え
リーリー ###そして### リーリー次に、
を置き換えます リーリー ###そして### リーリー最初の変更により最初のエラー メッセージは修正されますが、2 番目の変更がなければコードはまだ機能しません。
以上がジェネリック関数としてのメソッドの型制約を備えたインターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。