Estou tentando validar um campo struct em Golang usando o pacote go-playground/validator/v10. Especificamente, quero usar a tag oneof para validar que o valor do campo corresponde a um dos valores predefinidos, que inclui strings com aspas simples ('). Aqui está o código que estou usando:
package main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
// Struct with validation tag
type Award struct {
Title string `validate:"oneof=palm'dor level'dor 'state award'"`
}
func main() {
validate := validator.New()
// Test cases
testCases := []Award{
{"palm'dor"}, // Expected: Valid
{"level'dor"}, // Expected: Valid
{"state award"}, // Expected: Valid
{"other"}, // Expected: Invalid
}
for _, testCase := range testCases {
err := validate.Struct(testCase)
if err != nil {
fmt.Printf("Input: %q - Invalid (%v)\n", testCase.Title, err)
} else {
fmt.Printf("Input: %q - Valid\n", testCase.Title)
}
}
}
Comportamento esperado: O programa deve validar "palm'dor", "level'dor" e "state award" como entradas válidas. Qualquer outro valor deve ser marcado como inválido.
Problema: Quando executei o programa, obtive a seguinte saída:
Input: "palm'dor" - Invalid (Key: 'Award.Title' Error:Field validation for 'Title' failed on the 'oneof' tag)
Input: "level'dor" - Invalid (Key: 'Award.Title' Error:Field validation for 'Title' failed on the 'oneof' tag)
Input: "state award" - Valid
Input: "other" - Invalid (Key: 'Award.Title' Error:Field validation for 'Title' failed on the 'oneof' tag)