github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/types/signature.go (about) 1 // Copyright 2021 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package types 6 7 // Signatureは(ビルトインでない)関数またはメソッドの型を表します。 8 // シグネチャを同一性で比較する際は、レシーバは無視されます。 9 type Signature struct { 10 11 // シグネチャのスコープを維持する必要があります(それを渡すのではなく、Funcオブジェクトに保存します)。 12 // なぜなら、関数リテラルの型チェック時に一般的な型チェッカーが呼び出され、一般的なタイプが返されるからです。 13 // 次に、*Signature を展開してリテラルの本体のためにスコープを使用します。 14 rparams *TypeParamList 15 tparams *TypeParamList 16 scope *Scope 17 recv *Var 18 params *Tuple 19 results *Tuple 20 variadic bool 21 } 22 23 // NewSignatureは与えられたレシーバ、パラメータ、戻り値のための新しい関数型を返します。それぞれnilにすることもできます。もしvariadicがtrueに設定されている場合、関数は可変長引数を持ち、少なくとも1つのパラメータを持つ必要があります。また、最後のパラメータは無名のスライス型である必要があります。 24 // 25 // Deprecated: 代わりに型パラメータを使用できる [NewSignatureType] を使用してください。 26 func NewSignature(recv *Var, params, results *Tuple, variadic bool) *Signature 27 28 // NewSignatureTypeは、与えられたレシーバ、レシーバタイプパラメータ、 29 // タイプパラメータ、パラメータ、および結果に対して新しい関数型を作成します。 30 // variadicが設定されている場合、paramsは少なくとも1つのパラメータを保持している必要があり、 31 // 最後のパラメータのコア型は未命名スライスまたはバイト文字列型である必要があります。 32 // recvがnilでない場合、typeParamsは空でなければなりません。 33 // recvTypeParamsが空でない場合、recvはnilではない必要があります。 34 func NewSignatureType(recv *Var, recvTypeParams, typeParams []*TypeParam, params, results *Tuple, variadic bool) *Signature 35 36 // Recv returns the receiver of signature s (if a method), or nil if a 37 // function. It is ignored when comparing signatures for identity. 38 // 39 // For an abstract method, Recv returns the enclosing interface either 40 // as a *[Named] or an *[Interface]. Due to embedding, an interface may 41 // contain methods whose receiver type is a different interface. 42 func (s *Signature) Recv() *Var 43 44 // TypeParamsはシグネチャsの型パラメータを返します。パラメータが存在しない場合はnilを返します。 45 func (s *Signature) TypeParams() *TypeParamList 46 47 // RecvTypeParams はシグネチャ s のレシーバー型パラメーターを返します。nil の場合もあります。 48 func (s *Signature) RecvTypeParams() *TypeParamList 49 50 // Paramsはシグネチャsのパラメータを返します。パラメータがない場合はnilを返します。 51 func (s *Signature) Params() *Tuple 52 53 // Resultsはシグネチャsの結果、またはnilを返します。 54 func (s *Signature) Results() *Tuple 55 56 // Variadicは、シグネチャsが可変長引数であるかどうかを報告します。 57 func (s *Signature) Variadic() bool 58 59 func (t *Signature) Underlying() Type 60 func (t *Signature) String() string