# Functions
Appendは値xをスライスsに追加し、結果のスライスを返します。 Goのように、各xの値はスライスの要素の型に割り当て可能でなければなりません。.
AppendSliceは、スライスtをスライスsに追加し、結果のスライスを返します。 スライスsとtは同じ要素の型でなければなりません。.
ArrayOfは、与えられた長さと要素の型を持つ配列型を返します。 例えば、tがintを表す場合、ArrayOf(5, t)は[5]intを表します。
もし結果の型が利用可能なアドレススペースよりも大きくなる場合、ArrayOfはパニックを発生させます。.
ChanOfは指定された方向と要素の型を持つチャネル型を返します。 たとえば、tがintを表す場合、ChanOf(RecvDir, t)は<-chan intを表します。
gcのランタイムは、チャネルの要素型に64 kBの制限を課しています。 もしtのサイズがこの制限以上である場合、ChanOfはパニックを発生させます。.
Copyは、dstが満たされるか、srcが使い果たされるまで、srcの内容をdstにコピーします。 コピーされた要素の数を返します。 Dstとsrcはそれぞれ [Slice] または [Array] の種類でなければならず、 dstとsrcは同じ要素の型でなければなりません。
特別な場合として、dstの要素の種類がUint8である場合、srcの種類はStringであることができます。.
DeepEqualは、xとyが「深く等しい」という条件であるかどうかを報告します。 同一の型の2つの値は、次のどちらかの場合に深く等しいと見なされます。 異なる型の値は、決して深く等しくありません。
配列の値は、それぞれの要素が深く等しい場合に深く等しいと見なされます。
構造体の値は、対応するフィールド(公開されたものと非公開のもの)が深く等しい場合に深く等しいと見なされます。
関数の値は、どちらもnilの場合には深く等しく、それ以外の場合は深く等しくありません。
インタフェースの値は、深く等しい具体的な値を保持している場合に深く等しいと見なされます。
マップの値は、次のすべてが真である場合に深く等しいと見なされます: どちらもnilまたはどちらも非nilであり、長さが同じであり、 同じマップオブジェクトであるか、または対応するキー(Goの等値性を使用して一致する)が深く等しい値にマップされている場合。
ポインタの値は、Goの==演算子を使用して等しければ、深く等しいと見なされます。 または、深く等しい値を指している場合も深く等しくなります。
スライスの値は、次のすべてが真である場合に深く等しいと見なされます: どちらもnilまたはどちらも非nilであり、長さが同じであり、 同じ基礎配列の同じ初期エントリを指しているか(つまり、&x[0] == &y[0])または対応する要素(長さまで)が深く等しい場合。 非nilの空のスライスとnilのスライス(例:[]byte{}と[]byte(nil))は深く等しくありません。
他の値 - 数値、ブール値、文字列、およびチャネル - は、Goの==演算子を使用して等しい場合に深く等しいです。
一般的には、DeepEqualはGoの==演算子の再帰的な緩和です。 ただし、このアイデアは一貫性のないもので実装することは不可能です。 具体的には、値が自身に等しくない場合があります。 これは、func型であるため(一般的には比較できない)または浮動小数点NaN値であるためです または、そのような値を含む配列、構造体、またはインタフェースであるためです。 一方、ポインタの値は常に自身に等しく、それらがまたはそのような問題のある値を指している場合でも等しいため、 それらはGoの==演算子を使用して等しいため、その条件さえ満たせば、その内容に関係なく深く等しいと見なされます。 DeepEqualは、同じスライスまたは同じマップである場合、 コンテンツに関係なく深く等しいと見なされるように定義されています。
DeepEqualはデータ値をトラバースする中で、サイクルを検出することがあります。 DeepEqualが以前に比較したポインタの値を2回目以降比較するとき、それらを指す値を検査せずに等しいと見なします。 これにより、DeepEqualが終了することが保証されます。.
FuncOfは与えられた引数と戻り値の型を持つ関数型を返します。 例えば、kがintを表し、eがstringを表す場合、 FuncOf([]Type{k}, []Type{e}, false)はfunc(int) stringを表します。// 可変引数の引数は、関数が可変引数かどうかを制御します。FuncOfは、 variadicがtrueであり、in[len(in)-1]がスライスを表していない場合にパニックを起こします。.
Indirectは、vが指す値を返します。 vがnilポインターの場合、Indirectはゼロ値を返します。 vがポインターでない場合、Indirectはvを返します。.
MakeChanは指定された型とバッファサイズで新しいチャネルを作成します。.
MakeFuncは、与えられた [Type] の新しい関数を返します。 この新しい関数は、呼び出されると以下の操作を実行します:
- 引数をValuesのスライスに変換します。 - results := fn(args)を実行します。 - 結果を一つずつフォーマルな結果に対応するValuesのスライスとして返します。
fnの実装は、引数の [Value] のスライスがtypで与えられた引数の数と型を持っていると仮定できます。 typが可変長引数の関数を記述している場合、最後のValue自体が可変長引数を表すスライス(可変長引数の関数の本体と同じように)です。 fnによって返される結果のValueのスライスは、typで与えられた結果の数と型を持つ必要があります。
[Value.Call] メソッドを使用することで、呼び出し元はValuesを用いた型指定の関数を呼び出すことができます。 対照的に、MakeFuncは型指定の関数をValuesを用いて実装することを呼び出し元に許可します。
ドキュメントのExamplesセクションには、さまざまな型のスワップ関数を構築する方法の説明が含まれています。.
MakeMapは指定された型の新しいマップを作成します。.
MakeMapWithSizeは、指定された型とおおよそのn個の要素のための初期空間を持つ新しいマップを作成します。.
MakeSliceは指定したスライスの型、長さ、容量の新しいゼロ初期化されたスライス値を作成します。.
MapOfは、指定されたキーと要素の型を持つマップ型を返します。 例えば、kがintを表し、eがstringを表す場合、 MapOf(k, e)はmap[int]stringを表します。
キーの型が有効なマップキーの型でない場合(つまり、Goの==演算子を 実装していない場合)、MapOfはパニックを起こします。.
Newは指定された型の新しいゼロ値へのポインタを表すValueを返します。 つまり、返されたValueのTypeは [PointerTo](typ)です。.
NewAtは、pを指し示すポインタを使用して、指定された型の値へのポインタを表すValueを返します。.
PointerToは要素tを持つポインタ型を返します。 例えば、もしtがFoo型を表すなら、PointerTo(t)は*Fooを表します。.
PtrToは、要素tを持つポインタ型を返します。 例えば、もしtがFoo型を表すなら、PtrTo(t)は*Fooを表します。
PtrToは [PointerTo] の古い綴りです。 これらの2つの関数は同じように動作します。
Deprecated: [PointerTo] によって置き換えられました。.
Selectは、ケースのリストによって説明されるselect操作を実行します。 Goのselect文と同様に、少なくとも1つのケースが進行できるまでブロックされ、一様な擬似乱数選択を行い、 その後、選択されたケースを実行します。選択されたケースのインデックスを返し、 もしケースが受信操作である場合は、受信した値と、その値がチャネルに送信された値と対応するかどうかを示す 真偽値を返します(チャネルがクローズされたためにゼロ値が受信された場合とは異なります)。 Selectは最大65536のケースをサポートしています。.
SliceAtは、基礎となるデータがpで始まり、長さと容量がnと等しいスライスを表す [Value] を返します。
これは [unsafe.Slice] のようなものです。.
SliceOfは要素の型がtのスライス型を返します。 例えば、tがintを表す場合、SliceOf(t)は[]intを表します。.
StructOfはフィールドを含む構造体の型を返します。 OffsetとIndexのフィールドは無視され、コンパイラによって計算されます。
StructOfは、現在、埋め込みフィールドの昇格メソッドをサポートしておらず、 エクスポートされていないStructFieldsが渡された場合にパニックを引き起こします。.
Swapperは、与えられたスライス内の要素を交換する関数を返します。
与えられたインターフェースがスライスでない場合、Swapperはパニックを起こします。.
TypeForは、型引数Tを表す [Type] を返します。.
TypeOfは、iの動的な型を表す反射 [Type] を返します。 もしiがnilのインターフェース値である場合、TypeOfはnilを返します。.
ValueOfはインターフェースiに格納された具体的な値で初期化された新しいValueを返します。ValueOf(nil)はゼロのValueを返します。.
VisibleFieldsはtの中のすべての可視フィールドを返します。tはstruct型である必要があります。 フィールドは、FieldByName呼び出しで直接アクセス可能ならば、可視として定義されます。 返されるフィールドには、無名structメンバー内のフィールドと非公開フィールドが含まれます。 これらは、struct内で見つかった順序と同じ並び順になります。無名フィールドは、即座にそれに続く昇格フィールドが続きます。
返されるスライスの各要素eに対応するフィールドは、値vのタイプtからv.FieldByIndex(e.Index)を呼び出すことで取得できます。.
Zeroは指定された型のゼロ値を表すValueを返します。 結果はValue構造体のゼロ値とは異なり、値が存在しないことを表します。 例えば、Zero(TypeOf(42))はKindが [Int] で値が0のValueを返します。 返された値はアドレスを取ることも変更することもできません。.
# 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
Ptrは [Pointer] 種別の旧名称です。.
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
# Structs
MapIterは、マップを範囲指定して反復するためのイテレータです。 詳細は [Value.MapRange] を参照してください。.
Methodは単一のメソッドを表します。.
SelectCaseは、select操作内の1つのcaseを表します。 caseの種類は、Dir(通信の方向)に依存します。
もしDirがSelectDefaultである場合、caseはデフォルトのcaseを表します。 ChanとSendはゼロ値でなければなりません。
もしDirがSelectSendである場合、caseは送信操作を表します。 通常、Chanの基礎となる値はチャネルであり、Sendの基礎となる値はチャネルの要素型に代入可能でなければなりません。 特別な場合として、もしChanがゼロ値である場合、そのcaseは無視され、フィールドのSendも無視され、ゼロ値またはゼロ値でないどちらでもかまいません。
もしDirが [SelectRecv] である場合、caseは受信操作を表します。 通常、Chanの基礎となる値はチャネルであり、Sendはゼロ値でなければなりません。 もしChanがゼロ値である場合、そのcaseは無視されますが、Sendはゼロ値でなければなりません。 受信操作が選択されると、受信された値はSelectによって返されます。.
SliceHeaderはスライスのランタイム表現です。 これは安全でも可搬性がありませんし、将来のバージョンで変更されるかもしれません。 さらに、Dataフィールドだけではデータがガベージコレクトされないことを保証できないため、 プログラムは基礎データへの正しい型のポインタを別に保持する必要があります。
廃止予定: 代わりにunsafe.Sliceまたはunsafe.SliceDataを使用してください。.
StringHeaderは文字列のランタイム表現です。 安全かつ可搬性が保証されておらず、将来のリリースで表現が変わる可能性があります。 さらに、Dataフィールドだけではデータがガベージコレクションされないことは保証できないため、プログラムは基礎データへの正しい型付きポインタを別途保持する必要があります。
Deprecated: 代わりにunsafe.Stringまたはunsafe.StringDataを使用してください。.
StructFieldはstruct内のフィールドを1つ記述します。.
ValueはGo言語の値に対する反射インターフェースです。
すべてのメソッドがすべての種類の値に適用されるわけではありません。制限事項がある場合は、各メソッドのドキュメントに記載されています。 kind-specificメソッドを呼び出す前に、値の種類を特定するためにKindメソッドを使用してください。型に適切でないメソッドを呼び出すと、ランタイムパニックが発生します。
ゼロ値は何も表していません。 その [Value.IsValid] メソッドはfalseを返し、Kindメソッドは [Invalid] を返し、Stringメソッドは"<invalid Value>"を返し、他のすべてのメソッドはパニックを発生させます。 ほとんどの関数やメソッドは無効な値を返さないでしょう。 もし返す場合は、そのドキュメントに条件が明示されています。
Valueは、基礎となるGoの値が同等の直接操作で並行に使用できる場合、複数のゴルーチンで同時に使用することができます。
2つのValueを比較するには、Interfaceメソッドの結果を比較してください。 ==を使用して2つのValueを比較すると、それらが表す基礎の値を比較しません。.
ValueErrorは、Valueメソッドがサポートされていない [Value] に対してValueメソッドが呼び出された場合に発生します。このような場合は、各メソッドの説明に記載されています。.
# Interfaces
TypeはGoの型の表現です。
すべてのメソッドがすべての種類の型に適用されるわけではありません。制限がある場合は、各メソッドのドキュメントに記載されています。 kind-specificメソッドを呼び出す前に型の種類を知るためにKindメソッドを使用してください。型の種類に適切でないメソッドを呼び出すと、ランタイムパニックが発生します。
Typeの値は比較可能であり、==演算子などで使用することができます。 2つのTypeの値は、同一の型を表している場合に等しいとされます。.
# Type aliases
ChanDirはチャネルの方向を表します。.
Kindは、 [Type] が表す特定の種類の型を表します。 ゼロのKindは有効な種類ではありません。.
SelectDirはセレクト文の通信方向を表します。.
StructTagは、structフィールドのタグ文字列です。
慣例として、タグ文字列はオプションでスペースで区切られたkey:"value"の連結です。 各キーは、スペース(U+0020 ' ')、引用符(U+0022 '"')、 コロン(U+003A ':')以外の非制御文字で構成される空でない文字列です。 各値は、U+0022 '"'文字とGoの文字列リテラル構文を使用して引用されます。.