github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/types/instantiate.go (about) 1 // "go test -run=Generate -write=all" によって生成されたコードです。編集しないでください。 2 3 // Copyright 2021 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 // このファイルはジェネリック型の具現化を実装します 8 // 型パラメータを型引数による置換で行います。 9 10 package types 11 12 // Instantiateは、与えられた型引数targsで型origをインスタンス化します。 13 // origは*Named型または*Signature型でなければなりません。エラーがない場合、 14 // 結果の型は同じ種類(*Named型または*Signature型)のインスタンス化された型になります。 15 // *Named型に添付されたメソッドもインスタンス化され、元のメソッドと同じ位置を持つ 16 // nil関数スコープの新しい*Funcに関連付けられます。 17 // ctxtがnilでない場合、同じ識別子を持つ以前のインスタンスと重複排除するために使用できます。 18 // 特別な場合として、ジェネリックの*Signatureの元の型は、ポインタの等価性がある場合のみ同一視されるため、 19 // 異なる(しかし可能性としては同一の)シグネチャをインスタンス化すると、異なるインスタンスが生成されます。 20 // 共有されたコンテキストの使用は、同じインスタンスがすべての場合で重複排除されることを保証しません。 21 // validateが設定されている場合、Instantiateは型引数とパラメータの数が一致し、 22 // 型引数がそれに対応する型制約を満たしていることを検証します。 23 // 検証に失敗した場合、結果のエラーは、対応する型パラメータの制約を満たさなかった 24 // 型引数を示す*ArgumentErrorをラップし、その理由を示す可能性があります。 25 // validateが設定されていない場合、Instantiateは型引数の数や型引数が制約を満たしているかどうかを検証しません。 26 // Instantiateはエラーを返さないことが保証されていますが、パニックする可能性があります。 27 // 具体的には、*Signature型の場合、型引数の数が正しくない場合は即座にパニックします。 28 // *Named型の場合、パニックは後で*Named API内で発生する可能性があります。 29 func Instantiate(ctxt *Context, orig Type, targs []Type, validate bool) (Type, error)