1. Для чисел нет функции округления

Если вы хотите округлять числа в go, вам придется реализовать это самостоятельно, то есть до выхода go 1.10.

2. Нет функции обратной строки

Опять же, странно, что go не хватает такой простой вещи, как функция обращения строки. Но бывают моменты, когда это действительно необходимо. Вот как это сделать:

3. Запись в файл JSON

Маршалинг — это процесс преобразования объектов домена в сериализованный формат, например json. Чтобы записать структуру golang в файл json, вам нужно сначала его маршалировать:

Если вы установите pretty на true, он будет сохранен в более читаемом формате. Вот как будет выглядеть наш вывод json:

4. Загрузка файла JSON

Unmarshalling — это процесс преобразования объектов домена из сериализованного формата, такого как json. Чтобы загрузить файл json в нашу структуру golang, нам нужно разархивировать данные json:

https://gist.github.com/alextanhongpin/12ca8509a51e9d11b26460aa2daa0b2c.js

Это файл json, который мы загружаем:

5. Сопоставление карты со структурами

Если вам нужно сопоставить golang map с structs, для этого есть библиотека:

6. Затенение полей

Бывают случаи, когда вы хотите скрыть определенные поля от golang struct, прежде чем возвращать его как ответ json, но не с подходом json:"-". В приведенном ниже примере показано, как удалить поле password из исходной структуры:

7. Составление структуры

При возврате ответа json вы можете захотеть вернуть поля из других structs, но не создавать их слишком много. Одним из способов достижения этого является композиция: вы создаете новую структуру, встраивая другие structs, и также решаете исключить поля с помощью затенения (см. предыдущий пример).

8. Перезапись имен тегов

Имя полей, возвращаемых в json, основано на теге json в вашей структуре. Вы можете перезаписать их, если хотите, чтобы ваш ответ json имел другое имя поля:

9. Объединение массивов

Вероятно, это было не так очевидно, но объединение массивов можно легко выполнить, как показано ниже:

Обратите внимание, что оба массива должны быть одного типа. Добавление массива string к массиву int приведет к ошибке.

10. Это быстро

Вот эталон запроса hello world с использованием wrk. Просмотрите полный отчет ниже:

1 резьба и 1 соединение:

Аналогичный тест проведен с 10 нитями и 10 соединениями: