弦
簡単な紹介
文字列文字列は、典型的には、人間可読テキストデータを格納するために使用され、バイトの配列を変更することができません。配列が異なっていると、文字列の要素を変更することはできません、ある読み取り専用のバイト配列。各ストリングは、固定であるが、文字列型文字列の長さの一部ではないが。ソースコードは、移動中に現れるソース文字列リテラルで、その結果、移動UTF8エンコードに必要とされるため、一般的にUTF8エンコードされています。
基礎となるデータに対応する言語の文字列を移動しますバイトの配列で、読み取り専用の文字列は、プログラムのバイト配列の基礎となる要素への変更を禁止属性。ストリング割り当ては、単に基礎となるデータのコピー引き起こすことなく、データ及び対応するアドレスの長さをコピー(キー!)
基本構造
中下部の言語の文字列を行くreflect.StringHeader
の定義:
型StringHeader構造体{ データuintptr レンINT }
ストリング構造は、2つの情報から構成されていますバイトの基本配列に第1ストリング点、第2バイトは、文字列の長さです。実際には、構造が文字列で、文字列はそう割り当てがあるreflect.StringHeader
複製構造、およびバイトの根底にある配列のコピーは含まれません。文字列の配列は、構造体の配列とみなすことができます。
私たちは「こんにちは、世界は」自身がメモリ構造を対応する文字列を見ることができます:
分析は、「こんにちは、世界」見つけることができ、基礎となるデータの文字列配列はまったく同じです。
データ:= [...]バイト{ 'H'、 'E'、 'L'、 'L'、 'O'、 ''、'、 'W'、 'O'、 'R'、' L」、 'D'、}