見出し画像

golang govalidatorの使い方と注意点

今回はGo言語のgovalidatorについて解説していきます。

govalidator

Go言語でデータ検証を行う際にはgovalidatorというライブラリが一般的に使用されます。
govalidatorは様々な検証ルールを提供し、構造体や単一の値に対してバリデーションを簡単に適用できるように設計されています。


govalidatorの使い方

パッケージのインストール

まず以下のコマンドでgovalidatorをインストールします。

go get github.com/asaskevich/govalidator


govalidatorの注意点

構造体にバリデーションタグを追加

検証したい構造体のフィールドにバリデーションルールを表すタグを追加します。

package main

import (
    "fmt"
    "github.com/asaskevich/govalidator"
)

type User struct {
    Email   string `valid:"email"`
    Age     int    `valid:"range(18|100)"`
    Message string `valid:"length(10|100)"`
}

func main() {
    user := User{
        Email:   "example@example.com",
        Age:     25,
        Message: "This is a valid message",
    }

    result, err := govalidator.ValidateStruct(user)
    if err != nil {
        fmt.Println("error:", err)
    }
    fmt.Println("Validation result:", result)
}


注意点

カスタムバリデーション関数の追加

govalidatorではデフォルトのバリデーションルールに加えて、カスタムバリデーション関数を追加することが可能です。
カスタムバリデーションを作成する際は関数がtrueまたはfalseを返すようにする必要があります。

govalidator.CustomTypeTagMap.Set("customValidatorTag", govalidator.CustomTypeValidator(func(i interface{}, context interface{}) bool {
    switch v := i.(type) {
    case string:
        // カスタムロジックをここに書く
        return true
    default:
        return false
    }
}))


エラーメッセージのカスタマイズ

govalidatorはデフォルトで返すエラーメッセージをアプリケーションに合わせてカスタマイズすることも可能です。
エラーメッセージのカスタマイズはユーザーに対してより明確なフィードバックを提供するのに役立ちます。


golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。
この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?