Golang は Google が開発したオープンソース プログラミング言語で、静的型付けとガベージ コレクション メカニズムを使用し、同時プログラミングをサポートしています。関数は Golang の重要なコンポーネントであり、マップ、スライス、構造体、インターフェイスは関数でよく使用されるデータ型です。この記事では、Golang でのこれらのデータ型の使用法を紹介します。
map はキーと値のペアのデータ構造で、Golang ではその使用法は非常に簡単です。以下は例です:
package main import "fmt" func main() { m := make(map[string]int) m["apple"] = 1 m["banana"] = 2 m["orange"] = 3 fmt.Println(m) }
上の例では、まず make 関数を使用して空のマップを作成し、次にキーと値のペアをマップに順番に追加します。最後に、fmt パッケージの println 関数を使用してマップが出力されます。
make 関数を使用してマップを作成することに加えて、以下に示すように、リテラルを使用して空ではないマップを作成することもできます。
package main import "fmt" func main() { m := map[string]int{"apple": 1, "banana": 2, "orange": 3} fmt.Println(m) }
変数を宣言するときにマップを使用することもできます。次のようにそれらをまとめて宣言します。
package main import "fmt" func main() { var m map[string]int m = make(map[string]int) m["apple"] = 1 m["banana"] = 2 m["orange"] = 3 fmt.Println(m) }
もちろん、キーと値のペアがマップに存在しない場合は、以下に示すように、delete 関数を使用して削除できます。 2. スライスのタイプ
package main import "fmt" func main() { m := make(map[string]int) m["apple"] = 1 m["banana"] = 2 m["orange"] = 3 delete(m, "banana") fmt.Println(m) }
上の例では、make 関数を使用して、要素タイプが文字列、長さが 3 のスライスを作成します。次に、スライスに 3 つの要素を追加し、最後に append 関数を使用して新しい要素をスライスに追加しました。
もちろん、以下に示すように、リテラルを使用して空ではないスライスを作成することもできます:
package main import "fmt" func main() { s := make([]string, 3) s[0] = "apple" s[1] = "banana" s[2] = "orange" s = append(s, "grape") fmt.Println(s) }
また、以下に示すように、変数を宣言するときにスライスを一緒に宣言することもできます:
package main import "fmt" func main() { s := []string{"apple", "banana", "orange"} s = append(s, "grape") fmt.Println(s) }
3. 構造体型
package main import "fmt" func main() { var s []string s = make([]string, 3) s[0] = "apple" s[1] = "banana" s[2] = "orange" s = append(s, "grape") fmt.Println(s) }
上の例では、type キーワードを使用して、Person という名前の構造体型を作成します。次に、タイプが Person である変数 p を作成し、それに値を割り当てます。
さらに、以下に示すように、構造体ポインターを使用して構造体型のフィールドにアクセスすることもできます:
package main import "fmt" type Person struct { Name string Age int } func main() { p := Person{"Tom", 18} fmt.Println(p) }
4. インターフェイス型
package main import "fmt" type Person struct { Name string Age int } func main() { p := &Person{"Tom", 18} p.Name = "Jerry" fmt.Println(p) }
上の例では、type キーワードを使用して、Eat メソッドが 1 つだけある Animal という名前のインターフェイス タイプを作成しました。次に、type キーワードを使用して Cat という名前の構造体型を作成します。これは、Animal 型の Eat メソッドを実装します。最後に、Animal 型の変数 a を作成し、それを Cat 型の変数に割り当てます。 aのEatメソッドを呼び出すと、Catが食事をしていることを示す文が出力されます。
さらに、以下に示すように、型アサーションを使用して、変数が特定のインターフェイスを実装しているかどうかを判断することもできます。
package main import "fmt" type Animal interface { Eat() } type Cat struct { Name string } func (c *Cat) Eat() { fmt.Printf("%s is eating ", c.Name) } func main() { var a Animal a = &Cat{"Tom"} a.Eat() }
上の例では、type キーワードを使用して作成します。 Animal という名前のインターフェイス タイプには、Eat メソッドが 1 つだけあります。次に、type キーワードを使用して Cat という名前の構造体型を作成します。これは、Animal 型の Eat メソッドを実装します。最後に、Animal 型の変数 a を作成し、それを Cat 型の変数に割り当てます。型アサーションを使用して、 a が Cat 型を実装し、true を出力するかどうかを判断します。
以上がGolang 関数のマップ、スライス、構造体、インターフェイス タイプの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。