JSON (JavaScript Object Notation) は軽量のデータ交換形式です。人間にとっては読み書きが容易であり、コンピュータにとっても解析と生成が容易です。ただし、JSON にはキーの型が文字列でなければならないという制限があります。これは、複雑なデータ構造を渡したり解析したりする必要がある場合、JSON の操作が少し難しくなる可能性があることを意味します。
Go 言語には、interface{}
型の型なし変数を使用する、この問題を解決するツールがあります。この機能を使用すると、キー名を知らなくても任意の構造を作成できます。この記事では、golang で型なし変数を使用して JSON を記述する例を見ていきます。
不定型変数
不定型変数を理解するには、まず型変換に関する基本的な知識を理解する必要があります。 Go 言語では、明示的および暗黙的な型変換を通じて、値をある型から別の型に変換できます。たとえば、string
を int
に変換したり、int
を float
に変換したりできます。
不定型変数は、任意の型の値を含めることができる未割り当ての型変数です。このタイプの変数は、さまざまなタイプのデータを処理する必要がある場合に非常に便利です。型なし変数を使用すると、ネストされたキーと値のペアを含む未定義のキー名を持つ JSON を書き込むことができます。
不定型変数の作成
不定型変数を作成する最も簡単な方法は、宣言されていない構文を使用することです。たとえば、次のステートメントは、#xx という名前の型なし変数を作成します。
var x interface{}現時点では、#xxx
変数には型が割り当てられていないため、割り当てることができます。任意の型 値: <pre class='brush:php;toolbar:false;'>x = 42 // int
x = "hello" // string
x = true // bool</pre>
不定型変数の操作
不定型変数には任意の型の値を含めることができるため、その値にアクセスするには型アサーションを使用する必要があります。たとえば、
x 変数に int 値が含まれていることがわかっている場合は、次の型アサーションを使用して、それを新しい i
変数に割り当てることができます。 x
変数に含まれる値の型を判断するには、型スイッチと
ステートメントを使用してその型をテストできます。 <pre class='brush:php;toolbar:false;'>i := x.(int)</pre>
上記のコードは次のようになります。出力 x
変数の型と値。
無限に型指定された変数の制限無限に型指定された変数は非常に便利ですが、いくつかの制限もあります。型なし変数は格納されている型情報を失うため、その値を直接算術演算や比較演算の対象にすることはできません。たとえば、次のコードは正しくありません。
switch v := x.(type) { case int: fmt.Printf("x is an int with value %v ", v) case string: fmt.Printf("x is a string with value %v ", v) default: fmt.Printf("x is of type %T ", v) }
上記の例では、コンパイラは
x変数と
y 変数の型を認識しないため、次のコードを実行できません。算術演算。これを回避するには、型アサーションを使用して #xx と
y を対応する型に変換します。
x := 42 y := 50 z := x + y // Error: invalid operation: x + y (mismatched types interface {} and interface {})
不定型変数の JSON の記述
不定型変数を使用すると、不定のキー名を持つ JSON を簡単に作成できます。型なし変数を使用して、入れ子になったキーと値のペアを持つ JSON を作成する例を見てみましょう。
x := 42 y := 50 z := x.(int) + y.(int)上記の例では、型なし変数を使用して、入れ子になったキーと値のペアを持つ JSON を作成しています。まず、空のマップを作成し、
interface{}
タイプのキーと値を使用してキーと値のペアを動的に追加します。次に、ネストされたキーと値のペアを保存するための別の空のマップを作成します。最後に、ネストされたマップをキーと値のペアとしてメイン マップに追加し、json.Marshal()
関数を使用して JSON 文字列にエンコードします。上記のコードを実行すると、次の JSON 文字列が出力されます:
package main import ( "encoding/json" "fmt" ) func main() { data := make(map[string]interface{}) data["name"] = "Alice" data["age"] = 29 data["email"] = "alice@example.com" address := make(map[string]interface{}) address["city"] = "New York" address["state"] = "NY" data["address"] = address jsonString, _ := json.Marshal(data) fmt.Println(string(jsonString)) }
生成された JSON 文字列には、ネストされたキーと値のペアが含まれていることがわかります。これらはキーと同じ方法で表されます。マップ内の -value ペア。この例では、キー名を知らなくても、型なし変数を使用して複雑な JSON データ構造を記述する方法を示します。
結論この記事では、Go 言語で型なし変数を使用して複雑な JSON データ構造を記述する方法を学びました。この目標を達成するために、型なしの変数とマップを使用します。これにより、任意のキー名を持つネストされたキーと値のペアを簡単に作成できます。型なし変数にはいくつかの制限がありますが、さまざまな種類のデータを制御する場合に非常に便利で役に立ちます。 Go 言語で JSON を記述する必要がある場合は、型なし変数を使用するとニーズを満たすことができます。 以上がgolang変数jsonの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Goでは、init関数はパッケージの初期化に使用されます。 1)init関数は、パッケージの初期化時に自動的に呼び出され、グローバル変数の初期化、接続の設定、構成ファイルの読み込みに適しています。 2)ファイルの順序で実行できる複数のinit関数がある場合があります。 3)それを使用する場合、実行順序、テストの難易度、パフォーマンスへの影響を考慮する必要があります。 4)副作用を減らし、依存関係の注入を使用し、初期化を遅延させることをお勧めします。

go'sselectStatementStreamLinesConcurrentProgrambyMultipLexIngoperations.1)Itallow swaitingonMultipleChanneloperations、実行、exectingThefirstreadyone.2)

コンテキストアンドウェイトグループは、フォーマネングに焦点を合わせており、contextAllowsingSignalingCancellationAndDeadlinesAcrossapiboundariesを採用し、GoroutinesscanSclacefly.2)WaitGroupssynchronizeGoroutines、Allcompletebebroproproproproproproprotinesを保証します

goisbenefineformicroservicesdueToitssimplicity、and androbustconcurrencysupport.1)go'sdesignemphasisisimplicityandeficiency、ityformicroservices.2)itscurrencymodelusinggoroutinesandchanlowsallowseaseaseadlinging handlingy.3)

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

Golangを選択する理由には、1)高い並行性パフォーマンス、2)静的タイプシステム、3)ガベージ収集メカニズム、4)豊富な標準ライブラリとエコシステムは、効率的で信頼できるソフトウェアを開発するための理想的な選択肢となります。

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









