関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにとりあえずメモメモ。。。
Go 1.22 にて、reflect.TypeFor[T]()
が追加されますね。
reflect.TypeOf((*MyInterface)(nil)).Elem()
のシュガーメソッドになるのですが、これは結構嬉しい。
インターフェースのTypeを取得したい場合によくやりますねこれ。
試してみる
gotip を使っています。
$ gotip version go version devel go1.22-7abeefd Sat Jan 13 11:09:50 2024 +0000 linux/amd64
package main import ( "errors" "fmt" "reflect" ) func main() { // よくあるパターン t1 := reflect.TypeOf(1) t2 := reflect.TypeFor[int]() fmt.Println(t1, t2) // int int // 間違えやすいパターン e := errors.New("this is test") t3 := reflect.TypeOf(e) t4 := reflect.TypeOf(&e) t5 := reflect.TypeOf((*error)(nil)).Elem() t6 := reflect.TypeFor[error]() fmt.Println(t3, t4, t5, t6) // *errors.errorString *error error error }
実行すると以下のようになります。
$ gotip run . int int *errors.errorString *error error error
参考情報
https://pkg.go.dev/reflect@master#TypeFor
What’s New in Go 1.22: reflect.TypeFor · The Ethically-Trained Programmer
Goのおすすめ書籍
上の書籍の日本語版が下です。
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。