[go] 구조체(struct)의 태그(tag)를 이용한 데이터 검증 및 유효성 체크

구조체(struct)는 Go 언어에서 데이터를 그룹화하는 데 사용되는 효과적인 방법입니다. 태그(tag)는 구조체 필드에 메타데이터를 할당하는 데 사용됩니다. 이메일 주소, 비밀번호, 전화번호 등과 같은 데이터의 유효성을 체크하고 검증하는 과정에서 태그는 매우 유용하게 사용될 수 있습니다.

구조체 태그의 기본 형식

구조체 필드에 태그를 지정할 때 다음과 같은 형식을 사용합니다:

type User struct {
    Name     string `json:"name"`
    Email    string `json:"email"`
    Password string `json:"password"`
}

위의 예시에서 json:"name"과 같은 형태의 태그를 볼 수 있습니다. 이 태그는 해당 필드를 어떤 용도로 사용할지를 지정합니다. 여기서는 JSON 직렬화 및 역직렬화에 사용되는 이름을 지정하기 위해 사용했습니다.

데이터 유효성 검증을 위한 태그 활용

구조체 태그를 활용하여 데이터의 유효성을 검증하는 방법은 다양합니다. 여기서는 몇 가지 예시를 살펴보겠습니다.

필수 필드 검증

type User struct {
    Name     string `json:"name" validate:"required"`
    Email    string `json:"email" validate:"required"`
    Password string `json:"password" validate:"required"`
}

위의 예시에서 validate:"required" 태그를 사용하여 각 필드가 필수로 입력되어야 함을 명시했습니다. 이렇게 설정된 구조체 필드는 반드시 값을 가져야 하는데, 그렇지 않은 경우 유효성 검증 오류가 발생합니다.

이메일 주소 유효성 검증

type User struct {
    Name     string `json:"name"`
    Email    string `json:"email" validate:"email"`
    Password string `json:"password"`
}

위의 예시에서 validate:"email" 태그를 사용하여 이메일 주소의 유효성을 검증합니다. 이 태그를 사용하면 이메일 주소 형식이 올바른지 확인하고, 올바르지 않은 경우 유효성 검증 오류가 발생합니다.

길이 제한 검증

type User struct {
    Name     string `json:"name" validate:"min=2,max=30"`
    Email    string `json:"email"`
    Password string `json:"password" validate:"min=8"`
}

위의 예시에서 validate:"min=2,max=30"validate:"min=8" 태그를 사용하여 각 필드의 길이 제한을 설정합니다. 이를 통해 최소 길이와 최대 길이를 검증할 수 있습니다. 만약 설정한 길이 제한을 벗어나는 경우 유효성 검증 오류가 발생합니다.

태그를 활용한 데이터 검증 라이브러리

구조체 태그를 활용한 데이터 유효성 검증을 자동화하는 라이브러리도 있습니다. 대표적으로 validationsgo-playground/validator 등이 있습니다. 이러한 라이브러리를 사용하면 좀 더 편리하게 데이터의 유효성을 체크할 수 있습니다.

구조체 태그를 사용하여 데이터의 검증과 유효성 체크를 통해 코드의 신뢰성과 유지 보수성을 향상시킬 수 있습니다.