Go 言語の特別なデータ型には、ポインター (値への間接的なアクセスに使用)、配列 (要素の固定長コレクション)、スライス (可変長配列)、構造体 (カスタム データ型)、およびインターフェイス (定義済み) が含まれます。メソッドの記号)。これらのデータ型は、単純さ、効率性、型安全性を提供し、特定のニーズに対処する場合に役立ちます。
Go 言語は、特定のニーズに対応するためにいくつかの特別なデータ型を提供します。これらは、シンプルさ、効率性、および型の安全性を提供します。
1. ポインタ (*型)
ポインタはメモリ アドレスを参照するデータ型で、基になる値への間接的なアクセスを可能にします。ポインターを使用すると、新しい値を返さずに基になる値を変更できます。
func main() { // 定义一个指向 int 变量的指针 ptr := new(int) // 通过指针修改 int 值 *ptr = 10 fmt.Println(*ptr) // 输出: 10 }
2. 配列 ([n] 型)
配列は、すべてが同じ型を持つ固定サイズの要素のコレクションです。配列は値型であり、参照型ではありません。
func main() { // 定义一个长度为 5 的 int 数组 arr := [5]int{1, 2, 3, 4, 5} // 访问数组元素 fmt.Println(arr[2]) // 输出: 3 }
3. スライス ([]型)
スライスは、配列の可変長バージョンです。スライスは、長さの制限を指定せずにサイズを動的に変更できます。配列とは異なり、スライスは参照型です。
func main() { // 定义一个 int 切片,初始化容量为 5 s := make([]int, 0, 5) // 添加元素到切片 s = append(s, 1, 2, 3) fmt.Println(s) // 输出: [1 2 3] }
4. 構造体 (struct)
構造体は、さまざまな種類のデータを 1 つのユニットに編成できるようにするカスタム データ型です。構造体のメンバーには名前でアクセスできます。
type Person struct { Name string Age int } func main() { // 定义一个 Person 结构体 person := Person{Name: "John Doe", Age: 30} fmt.Println(person.Name) // 输出: John Doe }
5. インターフェイス
インターフェイスは、実装なしでメソッド シグネチャのセットを定義します。インターフェイスで定義されているすべてのメソッドを実装している限り、どの型でもインターフェイスを実装できます。
type Shape interface { Area() float64 } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return math.Pi * c.Radius * c.Radius } func main() { // 定义一个 Circle 类型的值 circle := Circle{Radius: 5} // 将 Circle 值转换为实现了 Shape 接口 var shape Shape = circle fmt.Println(shape.Area()) // 输出: 78.53981633974483 }
実際的なケース:
ポインターを使用して関数のパフォーマンスを最適化する
次を使用して、大きな構造体またはスライスを関数パラメーターとして渡します。ポインター 関数は新しいコピーを返さずに基になる値を変更できるため、効率が向上します。
配列とスライスを使用したデータの処理
配列とスライスは、データの保存と処理に広く使用されています。ループと組み込み関数を使用して、データを効率的に走査、並べ替え、フィルター処理することができます。
構造体を使用して関連データを整理する
構造体を使用すると、複雑なカスタム タイプを作成して関連フィールドをエンティティに整理できます。これにより、データの表示と操作が簡素化されます。
インターフェイスを使用してコードの再利用性を実現する
インターフェイスを使用すると、異なる型が同じ動作を行うことができます。これにより、コードの再利用性と拡張性が促進されます。
以上がGo 言語の特殊なデータ型を調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。