Инструмент разработки: GoLand
Официальная спецификация кода: https://golang.org/doc/efficient_go.html
1. Инструменты
- Перед отправкой кода вам необходимо использовать инструмент fmt для форматирования
- Перед отправкой кода вам необходимо использовать инструмент vet для статической проверки.
2. Спецификация каталога
|– корзина
| - построить
|–build_dev/test/release.sh
|– ген-го
|–конфигурация
|– dev/test/release.yml
|– упаковка
|-Контроллер
|–к
|–rpc
|–обслуживание
|–*_impl.go
|–*_test.go
| - * _ Mock.go
| - продавец
|– readme.face
3. Соглашения об именах
- документ
- нижний регистр + подчеркивание
- именование пакетов
- Имя пакета и каталог должны быть согласованы, чтобы избежать конфликтов со стандартной библиотекой.
- Избегайте импорта относительных путей
- метод/интерфейс
- CamelCase
- Не внешние методы, первая буква должна быть строчной
- CamelCase
- Переменная
- CamelCase
- постоянный
- верхний регистр + подчеркивание
4. Примечания
- в состоянии пройти
/* …… */
или// ……
добавить заметки,//
должен сопровождаться пробелом
- Содержимое комментария должно быть выше файла/метода/переменной.
5. Исключение
- Исключения должны быть оценены и обработаны
- Не присваивать ошибку анонимной переменной
_
6. Другое
- Не допускается вызов Panic в логике, выберите log.Fatal из лога
- Не вызывайте отсрочку часто
- Вернитесь как можно скорее, как только произойдет ошибка, вернитесь немедленно
-
если принимает оператор инициализации и соглашается создать локальные переменные следующим образом
if err := file.Chmod(0664); err != nil { return err }
Имя получателя метода обычно берет первую букву strcut и пишется в нижнем регистре, а не это, я или я.
type rpcClient struct {
once sync.Once
}
func (r *rpcClient) newCodec(contentType string) (codec.NewCodec, error) {
//
}
- Для переменных типа BOOL
var b bool
, используйте его непосредственно как условие суждения, вместо того, чтобы использовать его для сравнения истинного/ложного - Сравнение равенства байтов и строк, используйте Equal
- Когда получателем является map, chan, func, не используйте передачу указателя, потому что они сами являются ссылочными типами.
- Когда получателем является срез, а функция не срезает и не перераспределяет слайс, не используйте передачу указателя.
- Когда приемник нужно модифицировать внутри функции, он должен быть передан указателем
- когда получатель является структурой и содержит
sync.Mutex
Или аналогичный член для синхронизации. Вы должны использовать указатель, чтобы члены не копировали
- Когда тип получателя является структурой и очень большой, или большим массивом, рекомендуется использовать передачу указателя для повышения производительности, а в других сценариях можно использовать передачу значения.