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