﻿# V8039\. Suspicious leading or trailing whitespace in the value used to identify an element\.

Анализатор обнаружил строку с потенциально некорректным начальным или конечным пробелом\.

Рассмотрим несколько примеров, на которые анализатор выдаёт предупреждения\.

Пример N1:

```cpp
func buildRequestHeaders() {
  headers := map[string]string{
    "Content-Type": "application/json",
    "Accept ":      "application/json",
    "User-Agent":   "my-service/1.0",
    ....
  }
  ....
}
```

Строковый ключ `"Accept "` содержит пробел в конце\. При попытке получить значение по ключу `"Accept"` \(без пробела\) оно не будет найдено\.

Для исправления нужно убрать пробел:

```cpp
"Accept":      "application/json"
```

Пример N2:

```cpp
func registerFlags() {
  debug := flag.Bool("debug", false, "enable debug logging")
  port := flag.Int(" port", 8080, "server port")

  flag.Parse()

  ....
}
```

Имя флага `" port"` начинается с пробела\. В результате флаг будет зарегистрирован именно с таким именем, и пользователь не сможет передать его привычным образом \(`--port`\)\. 

Для исправления нужно убрать пробел:

```cpp
port := flag.Int("port", 8080, "server port")
```

Пример N3: 

```cpp
func decodeUser() {
  type User struct {
    ID   int    `json:"id"`
    Name string `json:" name"`
  }

  u := User{
    ID:   1,
    Name: "Donald",
  }

  ....
}
```

Значение тега `json:" name"` содержит пробел в начале\. При сериализации и десериализации JSON будет использоваться ключ `" name"` вместо ожидаемого `"name"`\.

Для исправления нужно убрать пробел:

```cpp
Name string `json:"name"`
```