# Functions
AssertableToは、型Vの値が型Tにアサートされることができるかどうかを報告します。
AssertableToの動作は、3つのケースで未指定です: - TがTyp[Invalid]である場合 - Vが一般化されたインタフェースである場合。つまり、Goコードで型制約としてのみ使用されるインタフェースである場合 - Tが未実体化のジェネリック型である場合.
AssignableToは、型Vの値が型Tの変数に代入可能かどうかを報告します。
AssignableToの動作は、VまたはTがTyp[Invalid]またはインスタンス化されていないジェネリック型の場合、指定されていません。.
CheckExprは、式exprがパッケージpkgの位置posに現れたかのように型チェックを行います。 式についての [Type] 情報はinfoに記録されます。式は、実体化されていないジェネリック関数や型を示す識別子である場合があります。
pkg == nilの場合、[Universe] のスコープが使用され、指定された位置posは無視されます。 pkg != nilであり、posが無効な場合、パッケージのスコープが使用されます。それ以外の場合、posはパッケージに属している必要があります。
posがパッケージ内にない場合や、ノードが型チェックできない場合はエラーが返されます。
注意: [Eval] とCheckExprは、型と値を計算するためにCheckを実行する代わりに使用するべきではありませんが、Checkに追加して使用する必要があります。 これらの関数は式が使用される文脈(例: 代入)を無視するため、トップレベルの未型付き定数は対応する文脈固有の型ではなく、未型付きの型を返します。.
Comparableは、型Tの値が比較可能かどうかを報告します。.
ConvertibleToは、型Vの値が型Tの値に変換可能かどうかを報告します。
ConvertibleToの動作は、VまたはTがTyp[Invalid]またはインスタンス化されていないジェネリック型である場合、指定されていません。.
Defaultは、「未指定の」型に対して「型付き」のデフォルト型を返します; 他のすべての型に対しては、入力された型を返します。未指定のnilのデフォルト型は未指定のnilです。.
DefPredeclaredTestFuncsは、assertとtraceのビルトイン関数を定義します。 これらのビルトイン関数は、このパッケージのデバッグとテストのために作られています。.
Evalは、パッケージpkg内の位置posで評価された式exprの型と、定数であれば値を返します。 これは、提供されたファイルセットに対して完全な位置情報を持つASTを型チェックして導出したpkgに関連している必要があります。
fset、pkg、およびposのパラメータの意味は [CheckExpr] と同じです。exprが正常にパースできないか、結果のexpr ASTが型チェックできない場合はエラーが返されます。.
ExprStringはxの(短縮された可能性のある)文字列表現を返します。 短縮された表現はユーザーインターフェースに適していますが、Goの構文に必ずしも従っているわけではありません。.
Idが公開されていれば、そのままの名前を返します。それ以外の場合は、 パッケージのパスで修飾された名前を返します。.
Identicalはxとyが同じ型であるかどうかを返します。 [Signature] 型のレシーバは無視されます。
[Identical]、[Implements]、[Satisfies] などの述語は、 両方のオペランドが一貫したシンボルのコレクション([Object] 値)に属していると仮定します。 例えば、2つの [Named] 型は、それらの [Named.Obj] メソッドが同じ [TypeName] シンボルを返す場合にのみ同一となります。 シンボルのコレクションが一貫しているとは、パスがPである各論理パッケージについて、 それらのシンボルの作成には最大で一回の [NewPackage](P, ...)の呼び出しが関与していることを意味します。 一貫性を確保するために、すべてのロードされたパッケージとその依存関係に対して単一の [Importer] を使用します。 詳細は https://github.com/golang/go/issues/57497 を参照してください。.
IdenticalIgnoreTagsは、タグを無視した場合にxとyが同じ型であるかどうかを報告します。 [Signature] 型のレシーバーは無視されます。.
Implementsは、型VがインターフェースTを実装しているかどうかを報告します。
VがTyp[Invalid]やインスタンス化されていないジェネリック型の場合、Implementsの動作は未指定です。.
Instantiateは、与えられた型引数targsで型origをインスタンス化します。 origは*Alias、*Named、または*Signature型でなければなりません。エラーがない場合、 結果のTypeは同じ種類(それぞれ*Alias、*Named、または*Signature)のインスタンス化された型です。
*Named型にアタッチされたメソッドもインスタンス化され、元のメソッドと同じ位置を持つが関数スコープがnilの新しい*Funcに関連付けられます。
ctxtがnilでない場合、同じ識別子を持つ以前のインスタンスと重複排除するために使用できます。 特別な場合として、ジェネリックの*Signatureの元の型は、ポインタの等価性がある場合のみ同一視されるため、 異なる(しかし可能性としては同一の)シグネチャをインスタンス化すると、異なるインスタンスが生成されます。 共有されたコンテキストの使用は、同じインスタンスがすべての場合で重複排除されることを保証しません。
validateが設定されている場合、Instantiateは型引数とパラメータの数が一致していること、および型引数がそれぞれの型制約を満たしていることを検証します。 検証に失敗した場合、結果のエラーは*ArgumentErrorをラップする可能性があり、どの型引数がその型パラメータの制約を満たさなかったか、およびなぜ満たさなかったかを示します。
validateが設定されていない場合、Instantiateは型引数の数や型引数が制約を満たしているかどうかを検証しません。 Instantiateはエラーを返さないことが保証されていますが、パニックする可能性があります。 具体的には、*Signature型の場合、型引数の数が正しくない場合は即座にパニックします。 *Named型の場合、パニックは後で*Named API内で発生する可能性があります。.
IsInterfaceはtがインターフェース型かどうかを報告します。.
LookupFieldOrMethodは、与えられたパッケージと名前でTというフィールドまたはメソッドを検索し、対応する*Varまたは*Func、インデックスのシーケンス、そしてパスにおいてポインタ間接参照があったかどうかを示すブール値を返します。addressableが設定されている場合、Tはアドレス可能な変数の型です(メソッドの検索にのみ関係します)。Tはnilであってはなりません。 最後のインデックスエントリは、エントリが見つかった(埋め込まれた可能性のある)型のフィールドまたはメソッドのインデックスであり、次のいずれかです:
1.
MissingMethodは、VがTを実装している場合、(nil, false)を返します。そうでない場合、Tに必要な欠落しているメソッドと、欠落しているか、または単に間違った型(ポインタレシーバーまたは間違ったシグネチャ)を返します。 非インターフェース型V、またはstaticが設定されている場合、VがTを実装するには、TのすべてのメソッドがVに存在する必要があります。それ以外の場合(Vがインターフェースであり、staticが設定されていない場合)、MissingMethodは、Vにも存在するTのメソッドの型が一致していることだけをチェックします(例:型アサーションx.(T)の場合、xがインターフェース型Vである場合)。.
NewAliasは、指定された型名とrhsを持つ新しいAlias型を作成します。 rhsはnilであってはなりません。.
NewArrayは指定された要素の型と長さに対して新しい配列型を返します。 負の長さは未知の長さを示します。.
NewChanは指定された方向と要素の型のための新しいチャネル型を返します。.
NewCheckerは指定されたパッケージに対して新しい [Checker] インスタンスを返します。 [Package] ファイルは、checker.Filesを通じて段階的に追加することができます。.
NewConstは値valを持つ新しい定数を返します。 残りの引数は、すべてのオブジェクトで見つかる属性を設定します。.
NewContext は新しいコンテキストを作成します。.
NewFieldは、構造体のフィールドを表す新しい変数を返します。 埋め込まれたフィールドの場合、名前はフィールドがアクセス可能な 非修飾の型名です。.
NewFuncは与えられたシグネチャを持つ新しい関数を返します。これは関数の型を表します。.
NewInterfaceは与えられたメソッドと埋め込まれた型に対して新しいインターフェースを返します。 NewInterfaceは提供されたメソッドの所有権を持ち、欠けているレシーバーを設定することでその型を変更する可能性があります。
廃止予定: 代わりに任意の埋め込まれた型を許可するNewInterfaceTypeを使用してください。.
NewInterfaceTypeは、指定されたメソッドと埋め込み型に対して新しいインターフェースを返します。 NewInterfaceTypeは、提供されたメソッドの所有権を受け取り、抜けているレシーバを設定することで型を変更する場合があります。
レースコンディションを避けるために、インターフェースの型セットは、インターフェースの並行使用前にCompleteを明示的に呼び出すことで計算する必要があります。.
NewLabel は新しいラベルを返します。.
NewMapは与えられたキーと要素の型のための新しいマップを返します。.
NewMethodSetは、指定された型Tのメソッドセットを返します。 空であっても、必ず非nilのメソッドセットを返します。.
NewNamedは、与えられた型名、基礎型、および関連するメソッドに対して新しい名前付き型を返します。 もし与えられた型名のオブジェクトがまだ型を持っていない場合、その型は返された名前付き型に設定されます。 基礎型は*Namedではない必要があります。.
NewPackageは、指定されたパッケージのパスと名前に対して新しいPackageを返します。 このパッケージは完全ではなく、明示的なインポートは含まれていません。.
NewParam は関数のパラメータを表す新しい変数を返します。.
NewPkgNameは、インポートされたパッケージを表す新しいPkgNameオブジェクトを返します。 残りの引数は、全てのオブジェクトで見つかった属性を設定します。.
NewPointerは、指定された要素(ベース)タイプの新しいポインタータイプを返します。.
NewScopeは、指定された親スコープに含まれる新しい空のスコープを返します(存在する場合)。コメントはデバッグ用です。.
NewSignatureは与えられたレシーバ、パラメータ、戻り値のための新しい関数型を返します。それぞれnilにすることもできます。もしvariadicがtrueに設定されている場合、関数は可変長引数を持ち、少なくとも1つのパラメータを持つ必要があります。また、最後のパラメータは無名のスライス型である必要があります。
Deprecated: 代わりに型パラメータを使用できる [NewSignatureType] を使用してください。.
NewSignatureTypeは、与えられたレシーバ、レシーバタイプパラメータ、 タイプパラメータ、パラメータ、および結果に対して新しい関数型を作成します。 variadicが設定されている場合、paramsは少なくとも1つのパラメータを保持している必要があり、 最後のパラメータのコア型は未命名スライスまたはバイト文字列型である必要があります。 recvがnilでない場合、typeParamsは空でなければなりません。 recvTypeParamsが空でない場合、recvはnilではない必要があります。.
NewSliceは与えられた要素タイプ用の新しいスライスタイプを返します。.
NewStructは、指定されたフィールドと対応するフィールドタグを持つ新しい構造体を返します。 インデックスiを持つフィールドにタグがある場合、tags [i]はそのタグである必要がありますが、 tagsの長さは、最大インデックスiのタグを保持するために必要なだけの長さである場合があります。 したがって、フィールドにタグがない場合、tagsはnilである場合があります。.
NewTermは新しいユニオン用語を返します。.
NewTupleは指定された変数に対して新しいタプルを返します。.
NewTypeNameは、与えられたtypを指定する新しい型名を返します。 残りの引数は、すべてのオブジェクトで見つかった属性を設定します。
typ引数は、定義済み(Named)タイプまたはエイリアスタイプである場合も可能です。 また、nilである場合も、TypeNameを引数として使用でき、 副作用としてTypeNameのタイプがNewNamedに設定されます。.
NewUnionは与えられた要素で新しい [Union] 型を返します。 空のUnionを作成することはエラーであり、構文的に不可能です。.
NewVarは新しい変数を返します。 引数はすべてのオブジェクトで見つかった属性を設定します。.
ObjectStringはobjの文字列形式を返します。 Qualifierはパッケージレベルのオブジェクトの印刷を制御し、nilである可能性があります。.
RelativeToは、pkg以外のすべてのパッケージのメンバーを完全に修飾する [Qualifier] を返します。.
Satisfiesは型Vが制約Tを満たすかどうかを報告します。
VがTyp[Invalid]またはインスタンス化されていないジェネリック型である場合、Satisfiesの動作は指定されていません。.
SelectionStringはsの文字列形式を返します。 Qualifierはパッケージレベルのオブジェクトの出力を制御し、nilである場合もあります。
例:
"field (T) f int" "method (T) f(X) Y" "method expr (T) f(X) Y".
SizesForは、コンパイラがアーキテクチャで使用するサイズを返します。 コンパイラ/アーキテクチャの組み合わせが不明な場合、結果はnilです。
コンパイラ"gc"に対応したアーキテクチャ: "386", "amd64", "amd64p32", "arm", "arm64", "loong64", "mips", "mipsle", "mips64", "mips64le", "ppc64", "ppc64le", "riscv64", "s390x", "sparc64", "wasm"。.
TypeStringはtypの文字列表現を返します。 [Qualifier] はパッケージレベルのオブジェクトの印刷を制御し、nilである可能性があります。.
Unaliasは、tがエイリアス型でない場合はtを返し、 それ以外の場合はtのエイリアスチェーンを追跡して エイリアスでない型に到達すると、その型を返します。 その結果、返される結果は決してエイリアス型ではありません。.
WriteExprは、xの(短縮されたかもしれない)文字列表現をbufに書き込みます。 短縮表示はユーザーインターフェースに適していますが、必ずしもGoの構文に従うとは限りません。.
WriteSignatureは、関数キーワードを付けずにシグネチャsigの表現をbufに書き込みます。 [Qualifier] はパッケージレベルのオブジェクトの印刷を制御し、nilである可能性があります。.
WriteTypeはtypの文字列表現をbufに書き込みます。 [Qualifier] はpackageレベルのオブジェクトの表示を制御し、nilであることもあります。.
# Constants
事前に宣言された型.
エイリアス.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
基本型のプロパティ。.
No description provided by the author
No description provided by the author
チャネルの方向は、次の定数のいずれかで示されます。.
No description provided by the author
チャネルの方向は、次の定数のいずれかで示されます。.
チャネルの方向は、次の定数のいずれかで示されます。.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
型のない値に対する型.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
Typは、それぞれのBasicKindによってインデックス付けされた事前宣言された*Basic型を含んでいます。
Typ[Byte]の*Basic型は、名前が「uint8」になります。 「byte」という特定のエイリアスの基本型を取得するには、Universe.Lookup("byte").Type()を使用します(また、「rune」に対しても同様です)。.
UniverseスコープにはGoのすべての事前宣言されたオブジェクトが含まれています。 これはネストされたスコープチェーンの最外側のスコープです。.
Unsafeパッケージは、importパス"unsafe"のインポータによって返されるパッケージです。.
# Structs
Aliasは、エイリアス型を表します。 エイリアス型が作成されるかどうかは、 GODEBUG環境変数のgotypesalias設定によって制御されます。 gotypesalias=1の場合、エイリアス宣言はエイリアス型を生成します。 それ以外の場合、エイリアス情報は型名にのみ存在し、 実際の(エイリアスされた)型を直接指します。.
ArgumentErrorは引数のインデックスに関連するエラーを保持します。.
Arrayは配列型を表します。.
Basicは基本型を表します。.
Builtinは組み込み関数を表します。 組み込み関数には有効な型はありません。.
Chanはチャネルの型を表します。.
Checkerは型チェッカーの状態を維持します。 [NewChecker] で作成する必要があります。.
Configは型チェックの設定を指定します。 Configのゼロ値は、すぐに使用できるデフォルトの設定です。.
Constは宣言された定数を表します。.
Contextは不透明な型チェックコンテキストです。これは、型チェックされたパッケージやInstantiateへの呼び出し間で同じ型のインスタンスを共有するために使用される場合があります。Contextは同時利用に関して安全です。
共有コンテキストの利用は、すべてのケースで同じインスタンスが重複削除されることを保証するものではありません。.
エラーは型チェックのエラーを示します。エラーインターフェースを実装します。 "ソフト"エラーは、パッケージの有効な解釈を許容するエラーです(例:「未使用の変数」)。 "ハード"エラーは無視した場合に予測不可能な動作につながる可能性があります。.
Funcは、宣言された関数、具体的なメソッド、または抽象(インターフェース)メソッドを表します。そのType()は常に*Signatureです。 抽象メソッドは、埋め込みにより多くのインターフェースに所属することがあります。.
Infoは型チェック済みパッケージの結果タイプ情報を保持します。 マップが提供された情報のみ収集されます。 パッケージに型エラーがある場合、収集された情報は不完全である場合があります。.
イニシャライザは、パッケージレベルの変数、または複数の値を持つ初期化式の場合、変数のリストと対応する初期化式を表します。.
Instanceは、型と関数のインスタンス化のための型引数とインスタンス化された型を報告します。型のインスタンス化では、[Type] は動的型*[Named] になります。関数のインスタンス化では、[Type] は動的型*Signatureになります。.
インターフェースはインターフェース型を表します。.
Labelは宣言されたラベルを表します。 ラベルはタイプを持ちません。.
Mapはマップ型を表します。.
MethodSetは具体的または抽象(インターフェース)メソッドの順序付けられたセットです。 メソッドは [MethodVal] 選択であり、m.Obj().Id()によって昇順に並べられます。 MethodSetのゼロ値は使用準備完了の空のメソッドセットです。.
Namedは名前付き(定義された)型を表します。.
Nilは、事前宣言された値であるnilを表します。.
パッケージはGoのパッケージを説明します。.
PkgNameはインポートされたGoパッケージを表します。 PkgNameには型はありません。.
ポインタはポインタ型を表します。.
スコープはオブジェクトのセットを保持し、それが含まれる(親)スコープと含まれる(子)スコープへのリンクを維持します。オブジェクトは名前で挿入および検索することができます。Scopeのゼロ値は使用可能な空のスコープです。.
Selection(セレクション)は、セレクタ式 x.f を表します。 次の宣言に対して:
type T struct{ x int; E } type E struct{} func (e E) m() {} var p *T
以下の関係が存在します:
Selector Kind Recv Obj Type Index Indirect
p.x FieldVal T x int {0} true p.m MethodVal *T m func() {1, 0} true T.m MethodExpr T m func(T) {1, 0} false.
Signatureは(ビルトインでない)関数またはメソッドの型を表します。 シグネチャを同一性で比較する際は、レシーバは無視されます。.
Sliceはスライス型を表します。.
StdSizesはよく使われるサイズを作成するための便利な型です。 以下の単純化された仮定を行います:
- 明示的なサイズの基本型(int16など)のサイズは指定されたサイズです。 - 文字列とインターフェースのサイズは2 * WordSizeです。 - スライスのサイズは3 * WordSizeです。 - n要素の配列のサイズは、配列要素の型のn連続フィールドの配列のサイズに対応します。 - 構造体のサイズは、最後のフィールドのオフセットにそのフィールドのサイズを加えたものです。 すべての要素型と同様に、構造体が配列で使用される場合、そのサイズはまず構造体のアライメントの倍数に揃える必要があります。 - その他のすべての型のサイズはWordSizeです。 - 配列と構造体は仕様の定義に従ってアラインされます。その他のすべての型は最大アラインメントMaxAlignで自然にアラインされます。
*StdSizesはSizesを実装しています。.
Structはstruct型を表します。.
Tupleは変数の順序付きリストを表します。nil *Tupleは有効な(空の)タプルです。 Tupleはシグネチャの構成要素や複数の代入の型を表すために使用されますが、Goのファーストクラスの型ではありません。.
TypeAndValueは対応する式の型と値(定数の場合)を報告します。.
TypeListは型のリストを保持します。.
TypeNameは(定義済みまたはエイリアスの)型の名前を表します。.
TypeParamは型パラメータータイプを表します。.
TypeParamListは型パラメータのリストを保持します。.
Unionは、インタフェースに埋め込まれた項のユニオンを表します。.
No description provided by the author
# Interfaces
Importerは、インポートパスをパッケージに解決します。
注意: このインターフェースは、ローカルにvendoredされたパッケージのインポートには対応していません。 詳細は、https://golang.org/s/go15vendor を参照してください。 可能であれば、外部の実装では [ImporterFrom] を実装するべきです。.
ImporterFromは、インポートパスをパッケージに解決します。 https://golang.org/s/go15vendorに従い、ベンダリングをサポートします。 ImporterFromの実装を取得するには、go/importerを使用してください。.
Objectは、パッケージ、定数、型、変数、関数(メソッドを含む)、またはラベルなどの名前付きの言語エンティティを表します。 すべてのオブジェクトはObjectインターフェースを実装しています。.
Sizesはパッケージunsafeのサイズ決定関数を定義します。.
TypeはGoの型を表します。 すべての型はTypeインターフェースを実装しています。.
# Type aliases
BasicInfoは基本型のプロパティを記述するフラグの集合です。.
BasicKindは基本型の種類を表します。.
ChanDirの値は、チャネルの方向を示します。.
ImportMode は将来の利用用途のために予約されています。.
Qualifierは、[TypeString]、[ObjectString]、および [SelectionString] の呼び出しで名前付きのパッケージレベルのオブジェクトが出力される方法を制御します。
これらの3つのフォーマットルーチンは、Qualifierを各パッケージレベルのオブジェクトOに対して呼び出し、Qualifierが空ではない文字列pを返すと、オブジェクトはp.Oの形式で表示されます。 フォーマットルーチンが空文字列を返す場合、オブジェクト名Oのみが表示されます。
nilのQualifierを使用することは、(*[Package]).Pathを使用することと同じです:オブジェクトはインポートパスで修飾されます。例えば、"encoding/json.Marshal"となります。.
SelectionKindは、セレクタ式x.fの種類を記述します (修飾識別子は除く)。
xがstructまたは*structの場合、セレクタ式x.fは 一連の選択操作x.a.b.c.fを表す可能性があります。SelectionKindは 最終的な(明示的な)操作の種類を記述します。すべての 以前の(暗黙的な)操作は常にフィールド選択です。 Indicesの各要素は、暗黙的なフィールド(a、b、c)を フィールド選択オペランドのstruct型のインデックスで指定します。
FieldVal操作の場合、最終的な選択はSelection.Objで指定されたフィールドを参照します。
MethodVal操作の場合、最終的な選択はメソッドを参照します。 メソッドの宣言されたレシーバの"ポインタ性"が、暗黙のフィールド 選択後の実効レシーバと一致しない場合、&または*操作が暗黙的に レシーバ変数または値に適用されます。 したがって、fがポインタレシーバを必要とするがx.a.b.cが非ポインタ変数である場合、 x.fは(&x.a.b.c).fを表します。また、fが非ポインタレシーバを必要とするが x.a.b.cがポインタ値である場合、x.fは(*x.a.b.c).fを表します。
暗黙的または明示的なフィールド選択、または"ポインタ性"のために挿入された*操作による すべてのポインタ間接参照は、nilポインタに適用されるとパニックを引き起こします。 したがって、メソッド呼び出しx.f()は、関数呼び出しの前にパニックを引き起こす可能性があります。
対照的に、MethodExpr操作T.fは基本的に以下の形式の関数リテラルと等価です:
func(x T, args) (results) { return x.f(args) }
その結果、"ポインタ性"のために挿入された任意の暗黙的なフィールド選択と*操作は、 関数が呼び出されるまで評価されません。したがって、T.fまたは(*T).fの式は決してパニックしません。.
Termは [Union] 内の項を表します。.