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?