Чтение параметров из лямбда-функции AWS в Голанге - PullRequest
1 голос
/ 02 мая 2019

Я передаю события в лямбда-функцию AWS из файла events.json и анализирую ее в обработчике функции.

Код:

type MyEvent struct {
    Param string `json:"param1"`
    Token string `json:"token"`
}

func main() {
    lambda.Start(Handler)
}

func Handler(ctx context.Context, evt json.RawMessage) (events.APIGatewayProxyResponse, error) {

    var myEvent MyEvent
    json.Unmarshal(evt, &myEvent)

    fmt.Println(myEvent.Token)
    fmt.Println(len(myEvent.Token))

    // rest of the code is here
}

event.jsonфайл:

{
    "param1": "Param",
    "token": "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
}

Вывод функции:

35c760f4-b3dc-4657-b4f3–2c6566d4f42e
38

Значение печатаемого токена является правильным, но длина - нет.Длина токена составляет 36, но интерпретируется / печатается как 38.

Почему это происходит?

PS: я использую AWS SAM cli для запуска программы.

1 Ответ

1 голос
/ 02 мая 2019

работает

func main() {
    s := "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
    fmt.Println(len(s))
}

"–" этот персонаж имеет длину 3. Это просто странный персонаж. Имеет код символа 8211, вы хотите 45

https://unicodelookup.com/#8211/1

https://unicodelookup.com/#45/1

len(strings.ReplaceAll(myEvent.Token, "–", "-"))

даст вам правильную длину

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...