ホームページ > バックエンド開発 > Golang > 異なるデータ型の Go マップから値を安全にフェッチするにはどうすればよいですか?

異なるデータ型の Go マップから値を安全にフェッチするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-12 10:26:02
オリジナル
729 人が閲覧しました

How to Safely Fetch Values from a Go Map with Different Data Types?

Go マップからの値の取得

問題のシナリオ

次の Go マップについて考えてみましょう。

res := map[string]interface{}{
    "Event_dtmReleaseDate": "2009-09-15 00:00:00 +0000 +00:00",
    "Trans_strGuestList": nil,
    "strID":              "TSTB",
}
ログイン後にコピー

目標は次のとおりです。から次の値を取得します。 map:

  • Event_dtmReleaseDate
  • strID
  • Trans_strGuestList

Solution

Go マップから値にアクセスするには、値に関連付けられたキーを使用する必要があります。ただし、この場合、マップには文字列や nil などのさまざまなタイプの値が含まれます。

型アサーションの使用

値を取得する 1 つの方法は、型を使用することです。以下に示すように、アサーション:

id := res["strID"].(string)
ログイン後にコピー

この行は、「strID」キーに関連付けられた値を取得し、アサートします。

安全な型チェック

不正な型やキーの欠落による潜在的なパニックを回避するには、次の安全なアプローチの使用を検討してください。

var id string
var ok bool
if x, found := res["strID"]; found {
    if id, ok = x.(string); !ok {
        // Handle errors if the value is not a string.
    }
} else {
    // Handle errors if the key does not exist in the map.
}
ログイン後にコピー

このコードは、マップに「strID」キーが含まれているかどうかをチェックします。存在する場合、値を文字列に変換し、それを id 変数に割り当てようとします。このアプローチにより、型の不一致またはキーの欠落の場合にコードがパニックに陥らないことが保証されます。

追加メモ

  • Go マップの詳細については、を参照してください。 Go ドキュメント: http://golang.org/doc/Effective_go.html#maps.
  • 型アサーションとインターフェイスの詳細については、コンバージョンについては、http://golang.org/doc/Effective_go.html#interface_conversions.
をご覧ください。

以上が異なるデータ型の Go マップから値を安全にフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート