Golang 関数のパラメータ検証とデータ型変換

WBOY
リリース: 2024-04-13 13:54:02
オリジナル
441 人が閲覧しました

Go 言語は、安全性と保守性を確保するためにパラメーター検証とデータ型変換のメソッドを提供します。パラメーター検証: アサーションを使用して条件が満たされているかどうかを確認し、条件が満たされていない場合はパニックをトリガーします。無効な引数を示し、それらを返すカスタム エラー タイプ。データ型変換: strconv パッケージを使用して、文字列を他の型に明示的に変換します。型に互換性がある場合、暗黙的な型変換を自動的に実行します。これらの手法は、関数パラメーターの有効性を確保し、データ型を簡単に変換するのに役立ち、それによってコードの信頼性と保守性が向上します。

Golang 関数のパラメータ検証とデータ型変換

Go 言語の関数パラメータの検証とデータ型変換

Go 言語では、安全性と保守性の性的対策のために関数のパラメータ検証とデータ型変換が重要です。このチュートリアルでは、組み込みツールとカスタム メソッドを使用してこれらの操作を効率的に実行する方法について説明します。

パラメータ検証

Go 言語にはネイティブのパラメータ検証メカニズムがありませんが、一般的な代替手段が 2 つあります:

  • アサーションを使用します: アサーションを使用して、関数パラメータが特定の条件を満たしているかどうかを確認し、満たしていない場合はパニックを引き起こすことができます。
func ValidateUser(name string, age int) {
  if name == "" {
    panic("name cannot be empty")
  }
  if age < 0 {
    panic("age cannot be negative")
  }
}
ログイン後にコピー
  • カスタム エラー タイプ: カスタム エラー タイプを作成し、それを返して無効な引数を示すことができます。
type InvalidParameterError struct {
  param string
  msg string
}

func (e *InvalidParameterError) Error() string {
  return fmt.Sprintf("invalid parameter: %s - %s", e.param, e.msg)
}

func ValidateUser(name string, age int) error {
  if name == "" {
    return &InvalidParameterError{param: "name", msg: "cannot be empty"}
  }
  if age < 0 {
    return &InvalidParameterError{param: "age", msg: "cannot be negative"}
  }

  return nil
}
ログイン後にコピー

データ型変換

Go 言語は、明示的および暗黙的なデータ型変換をサポートしています。

  • 明示的な変換: 文字列を他の型に変換するには、strconv パッケージを使用します。
import "strconv"

func ConvertAgeToInt(age string) (int, error) {
  return strconv.Atoi(age)
}
ログイン後にコピー
  • 暗黙的な変換: 場合によっては、型に互換性がある場合、暗黙的な型変換が自動的に実行されます。
func AddNumber(a, b int) int {
  // 隐式将 a 转换为 float64
  return a + float64(b)
}
ログイン後にコピー

実際的なケース

ケース 1: ユーザー入力の検証

Web アプリケーションでは、から受信したものを検証する必要がある場合があります。ユーザー入力に対するフォーム。

func ValidateUserInput(name string, email string) error {
  if name == "" {
    return &InvalidParameterError{param: "name", msg: "cannot be empty"}
  }

  if _, err := mail.ParseAddress(email); err != nil {
    return &InvalidParameterError{param: "email", msg: "invalid email format"}
  }

  return nil
}
ログイン後にコピー

ケース 2: データ型変換

データベースから取得したデータは文字列である可能性がありますが、処理のために他の型に変換する必要がある場合があります。

func ConvertDuration(duration string) (time.Duration, error) {
  duration, err := strconv.ParseInt(duration, 10, 64)
  if err != nil {
    return 0, err
  }

  return time.Duration(duration)
}
ログイン後にコピー

これらの手法を使用すると、関数パラメーターの有効性を確保し、データを必要な型に簡単に変換できるため、コードの信頼性と保守性が向上します。

以上がGolang 関数のパラメータ検証とデータ型変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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