Go 言語では、データ転送オブジェクト (DTO) が非常に一般的なパターンです。これは、リクエストとレスポンスの間でクラス変換を実行するために Web 開発で広く使用されています。 Go 言語はタイプセーフな言語ですが、JSON やその他の外部データ形式を扱う場合は型変換を実行する必要があります。この記事では、Go 言語で DTO 変換を処理する方法を見ていきます。
DTO の背景
データ転送オブジェクト (DTO) は、オブジェクト内に転送する必要があるデータをカプセル化するために使用されるデザイン パターンです。複雑なオブジェクトを単純化できるため、アプリケーションがよりシンプルになり、保守が容易になります。ビジネス オブジェクトを技術的な実装から分離し、プログラムのセキュリティと柔軟性を向上させることができます。
ビジネス オブジェクトは通常、データベースにマップされた構造を持っていますが、更新やクエリなどの特定の操作では、オブジェクトの一部のみが渡されます。ここでDTOが活躍します。これらはオブジェクトを簡素化し、クライアントまたはサーバーに渡されるデータの量を削減します。また、クライアントからサーバーへの正しいデータ型変換も保証します。
Go を使用した DTO 変換
Go で DTO 変換を使用するには、対応するデータ構造を作成、ロード、処理する必要があります。以下では、DTO 変換の使用方法を示すサンプルを作成します。
まず、2 つのデータ構造を作成します。ユーザー (User) と DTO (UserDTO) の構造を表します。この例では、クライアントがユーザー名と年齢を含む JSON を送信すると仮定します。
type User struct { Name string Age int } type UserDTO struct { Name string Age string }
クライアントに返される値またはクライアントから受信される値は、Age でなければならないため、UserDTO 内の年齢は文字列であることがわかります。文字列形式である必要があります。
次に、User 型の構造体を UserDTO 型の構造体に変換する関数を作成します。
func ConvertToDTO(user User) UserDTO { return UserDTO{ Name: user.Name, Age: strconv.Itoa(user.Age), // int to string } }
この関数は、単純に新しい UserDTO 構造体を作成し、Name 属性をコピーし、 Age プロパティを文字列に変換します。これを行うために strconv.Itoa ライブラリを使用しました。
Echo や Jin などの Web フレームワークを使用している場合は、API リクエストを処理するときにこの機能を使用できます。
UserDTO を User 構造に変換する方法を示すために、逆関数 ConvertToUser を作成します。
func ConvertToUser(userDto UserDTO) User { age, _ := strconv.Atoi(userDto.Age) // string to int return User{ Name: userDto.Name, Age: age, } }
この関数は逆変換を実行します。つまり、UserDTO 構造を User 構造に変換します。 age 属性を文字列から整数に再度変換します。
DTO の変換が完了したので、これらの関数を使用できるようになります。次のコードを使用してテストします。
func main() { user := User{ Name: "Alice", Age: 25, } userDto := ConvertToDTO(user) fmt.Println(userDto.Name, userDto.Age) user2 := ConvertToUser(userDto) fmt.Println(user2.Name, user2.Age) }
この例では、Alice という名前の 25 歳のユーザーを作成します。これを DTO に変換してから、User タイプに変換し直します。
これが最終出力です:
Alice 25 Alice 25
これで、Go を使用した DTO 変換のプロセスが完了しました。
結論
データ転送オブジェクト (DTO) は、オブジェクト内に転送する必要があるデータをカプセル化するために使用される一般的な設計パターンです。 Go 言語で JSON や XML などの外部データ形式を処理する必要がある場合、データ型変換を実行する必要があります。この記事では、Go を使用した DTO 変換を検討し、データを指定された DTO 型に変換する方法を示しました。この記事が、将来の開発で DTO 変換をより適切に処理するのに役立つことを願っています。
以上がgolangのdto変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。