0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go 言語を学ぶAdvent Calendar 2023

Day 25

【Go言語】ジェネリクス

Last updated at Posted at 2023-12-24

ジェネリクスは、関数や構造体に型パラメーターを追加することで、より柔軟なコードの記述を可能する。
しかし、ジェネリクスの概念はメソッドの記法とは異なる点がいくつかある。

ジェネリクスの基本

  • ジェネリクスを使うと、関数や構造体に追加の型パラメーターを設定できる
  • 型パラメーターは関数名や構造体名の後ろに配置され、角括弧[]で囲む
  • さまざまな型に対して同じ関数や構造体を使い回せるようになる。

構造体でジェネリクス

package main

import "fmt"

// ジェネリックな構造体
type Pair[T1, T2 any] struct {
    First  T1
    Second T2
}

func main() {
    // ジェネリックな構造体の使用例
    pair1 := Pair{1, "one"}
    pair2 := Pair{"two", 2}

    fmt.Printf("Pair 1: First=%v, Second=%v\n", pair1.First, pair1.Second)
    fmt.Printf("Pair 2: First=%v, Second=%v\n", pair2.First, pair2.Second)
}

メソッドにジェネリクス

package main

import (
    "fmt"
)

// ジェネリックな型Tに対するメソッド
func Print[T any](value T) {
    fmt.Printf("%v\n", value)
}

func main() {
    // ジェネリックなメソッドの使用例
    Print(42)
    Print("Hello, World!")
    Print(3.14)
}

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?