구조체(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"
태그를 사용하여 각 필드의 길이 제한을 설정합니다. 이를 통해 최소 길이와 최대 길이를 검증할 수 있습니다. 만약 설정한 길이 제한을 벗어나는 경우 유효성 검증 오류가 발생합니다.
태그를 활용한 데이터 검증 라이브러리
구조체 태그를 활용한 데이터 유효성 검증을 자동화하는 라이브러리도 있습니다. 대표적으로 validations
와 go-playground/validator
등이 있습니다. 이러한 라이브러리를 사용하면 좀 더 편리하게 데이터의 유효성을 체크할 수 있습니다.
구조체 태그를 사용하여 데이터의 검증과 유효성 체크를 통해 코드의 신뢰성과 유지 보수성을 향상시킬 수 있습니다.