Avatar ·

Para que servem as crases (backticks) na definição de structs em Go?

Olá! Comecei a estudar Go e me deparei com uma construção confusa. Quando olhava exemplos de structs, notei que após os campos às vezes vêm strings entre crases: ```go type User struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email,omitempty"` } ``` Eu entendo que isso está relacionado a JSON, mas não consigo entender para que servem exatamente essas crases e o que elas fazem. Posso omiti-las? O que acontece se eu usar aspas normais ou removê-las completamente? Também vi registros assim: ```go type Config struct { Port int `yaml:"port"` Host string `yaml:"host"` Timeout int `yaml:"timeout,default=30"` } ``` E até mesmo isso: ```go type Validator struct { Name string `validate:"required,min=3,max=50"` Email string `validate:"required,email"` } ``` Parece que o conteúdo entre crases muda o comportamento do programa, mas não entendo o mecanismo. São strings mágicas? Como o Go as interpreta?