Search
Write a publication
Pull to refresh
1
0
Send message
А где для AMD?))) Переименуйте хоть в x64 или x86_64
А где для AMD?))) Переименуйте хоть в x64 или x86_64

Из-за этого бага приостановили раскатку обновления 25.04, здесь было описано: https://www.gamingonlinux.com/2025/04/ubuntu-25-04-upgrades-halted-due-to-kubuntu-users-getting-a-broken-desktop/

built-in функцию copy для пришельцев придумали?)
Никто также не запрещает сделать append(dst, src...).
Всё это справедливо для слайсов, но никто не мешает кастить массивы в слайсы и назад, хоть это и муторно (append не сработал, но copy - вполне себе):

package main

import "fmt"

func main() {
	var a [2]int = [2]int{1, 2}
	var b [2]int

	fmt.Println(a)

	copy(b[:], a[:])
	fmt.Println(b)
}

sqlx > gorm, умеет такое же, но не приносит все минусы ORM-ок. Ещё и квери билдер удобный

Никакой, смысл тестировать мэйн?
Раз так хочется покороче - разбил инициализацию зависимостей по подпакетам (условный cmd/{название-проекта}/bootstrap/*, и там инициализируешь всё, что нужно, а сами Init-ы дёргаешь в мэйне. Можешь даже тесты прикрутить, кто тебе мешает

Например, как-то так
Например, как-то так

  1. Явный DI > Wire/fx/другие подобные решения.
    Для инициализации зависимостей можно делать отдельные пакеты/подпакеты в cmd, если уж такой большой проект, но только не IoC-контейнеры, с которыми выстрелить в ногу легче простого. (Как минимум в Go)

  2. Ну и не понимаю, хоть убейте, зачем для структурированного логирования использовать что-то иное кроме zap, который почти что стандартом стал.

  3. Также не знаком с gin, однако судя по приставке Should у вас свалится паника, если не смаппится запрос. Может проще адекватно вернуть ошибку? Паника - это про фатал-кейсы, тут у нас просто плохой запрос, т.е. ошибка данных, но никак не фатальная ошибка, способная всё повалить.

  4. И зачем логировать ошибку в сервисе, если её можно пробросить на самый верхний уровень и уже там корректно обработать в одном месте как нужно?

Optional можно легко сделать собственной обёрткой а-ля:

type Optional[V any] struct {
	defined bool
	value   V
}
// И пара-тройка хелперов к нему


Всё на стеке, легко проверяется на "nil", и нет путаницы с валидными нулевыми значениями если отказаться от указателей. Так делают в sql пакете, например: https://pkg.go.dev/database/sql#NullInt64

Information

Rating
Does not participate
Registered
Activity