タグ

reflectに関するnabinnoのブックマーク (4)

  • 【Golang】reflect.DeepEqualでsliceとmapを組み合わせて比較する - 逆さまにした

    先日、集合や族を扱うパッケージを書いていたところ、mapやsliceが混じった構造でどのようにEqualを実装するかで少しハマりました。reflect.DeepEqualの実装を見て解決したので備忘として整理します。 ちょうどGoで違うmapであることをテストする でも、同じような課題に遭遇された方がいたようです。 考え方 まず、mapのEqualを実装するときに定義する2つのmapが等しいは、大きく以下の2つになると思います。 中身の要素が同じmapは、等しい(ポインタが異なることは気にしない) 中身が同じでも、ポインタが異なれば、等しくない それぞれ、以下のように比較できます。 1. 中身の要素が同じmapは、等しい(ポインタが異なることは気にしない) この場合は、中身を比較すればいいので、reflect.DeepEqualで簡潔に書くことができます。 2. 中身が同じでも、ポインタが

    【Golang】reflect.DeepEqualでsliceとmapを組み合わせて比較する - 逆さまにした
  • Go 言語 reflect チートシート - Qiita

    はじめに Go 言語の reflect パッケージは動的に型や値を扱いたい場合に便利です。 このページでは reflect パッケージの詳しい Example をチートシートとしてまとめました。 ご案内 このページの内容を別サイトにまとめなおしました。 目的別に項目を分けたのでやりたいことからコードを逆引きできます。 また、サイト上でコードを即時実行できるように The Go Playground の実行フォームを埋め込んだので、気軽にコードをお試しいただけます。 目次 型情報を値として取得する 型情報を比較する 任意の型の値を引数とする関数を定義する リフレクションで変数を更新する 構造体のフィールド一覧を取得する 構造体のフィールドのタグ情報を取得する ゼロ値であるかを調べる ゼロ値を取得する リフレクションで数値を扱う リフレクションで文字列を扱う リフレクションで配列を扱う リフレ

    Go 言語 reflect チートシート - Qiita
  • reflect package - reflect - Go Packages

    Tips for writing clear, performant, and idiomatic Go code

  • reflect パッケージ - golang.jp

    Go言語とは、Googleが開発した新しいプログラミング言語です。 当サイトではこの新しい言語についての情報を集約していきます。 このサイトの更新が滞っており、情報が古くなっておりますのでご注意ください。 import "reflect" reflectパッケージは、どんな型のオブジェクトでもプログラムから操作可能なランタイムリフレクションを実装しています。典型的な使い方としては、interface{}から静的な型の値を取得したり、Typeof関数を呼び出して動的な型情報を得たりします。このTypeof関数は、インタフェース型であるType型のオブジェクトを返します。これは構造体へのポインタ*StructTypeや、*IntTypeなどのように実際の型についての詳細を表しており、これを型スイッチや、型アサーションを使って調べます。 NewValue関数を呼び出すとランタイムデータを表すVa

  • 1