ホームページ  >  記事  >  バックエンド開発  >  Golang 関数のマップ、スライス、構造体、インターフェイス タイプの使用方法

Golang 関数のマップ、スライス、構造体、インターフェイス タイプの使用方法

PHPz
PHPzオリジナル
2023-05-17 08:02:071090ブラウズ

Golang は Google が開発したオープンソース プログラミング言語で、静的型付けとガベージ コレクション メカニズムを使用し、同時プログラミングをサポートしています。関数は Golang の重要なコンポーネントであり、マップ、スライス、構造体、インターフェイスは関数でよく使用されるデータ型です。この記事では、Golang でのこれらのデータ型の使用法を紹介します。

1. マップの種類

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. スライスのタイプ

slice は、要素をいつでも追加または削除できる動的配列です。以下は例です:

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. 構造体型

struct は、複数の型のデータを格納できるカスタム複合型です。以下に例を示します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。