Size: a a a

2020 December 10

 P

 ‌‌Gleb Pilipets... in Go-go!
Спасибо, почитаю
источник

Z

Zver in Go-go!
Вообще более глобально есть книга Чистая архитектура. Там более широко вся эта тема раскрыта.
источник

A

Artyom in Go-go!
Artyom
Окей.

Package: P

P.Init() // инициализирует P, вызываем этот метод в мейне.


Я: вынести логику инициализации из мейна, так как в противном случае ее нельзя будет использовать в пакетах. Вынес в package I

InitProject() {
// ...
P.Init()
// ...
}


Я: пытаюсь сделать такое в пакете P

P.TestMain() {
I.InitProject()
}


Компилятор: cyclic import.

ConfigureProject(d *App, c Config) {
 DoFoo(d, c)
 DoBar(d, c)
 return d
}

Эту функцию вызываем в каждом модуле, где нужно инициализировать. И конфиги свои тоже передаём

Сейчас весь сконфигурированный проект содержит указатели на данные, а раньше он опирался на переменные из другого пакета, поэтому мы могли только идти в одном направлении -- Мейн, Foo. Но не Foo, Main. Потому что Мейн уже подключил Foo.

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

P.S.: Мейн это не main, а просто какой-то пакет.
источник

RF

Ramil Fakhrut in Go-go!
Всем привет ! Правильно ли проверять коннект с бд в горутите каждые 2 минуты, если ошибка, то делать новый коннект в конфиге viper или как правильнее  ?
источник

П

Павел in Go-go!
Ramil Fakhrut
Всем привет ! Правильно ли проверять коннект с бд в горутите каждые 2 минуты, если ошибка, то делать новый коннект в конфиге viper или как правильнее  ?
а если коннект есть, а запрос отвалился?
источник

ep

egor popov in Go-go!
Ramil Fakhrut
Всем привет ! Правильно ли проверять коннект с бд в горутите каждые 2 минуты, если ошибка, то делать новый коннект в конфиге viper или как правильнее  ?
Если речь про database/SQL, то зачем вообще проверять Коннект. Используйте коннекшен пулл через DB абстракцию.
источник

RF

Ramil Fakhrut in Go-go!
если запрос отвалился, просто логирую - это в отдельной сущности происходит (model), если к примеру отвалился сервер с database/SQL, нужно переключить на резерв ( с горутины поймал что коннекта нет, в viper подал новый коннект, сервис продолжит работу)
источник

ep

egor popov in Go-go!
Ramil Fakhrut
если запрос отвалился, просто логирую - это в отдельной сущности происходит (model), если к примеру отвалился сервер с database/SQL, нужно переключить на резерв ( с горутины поймал что коннекта нет, в viper подал новый коннект, сервис продолжит работу)
Переключаться надо не если умер Коннект, а умер сервер. Опять таки проверять конкретный Коннект нет смысла. Все это делает сам DB объект. Точно также как заданное число реконнектов.
источник

ep

egor popov in Go-go!
Т.е. переключаться надо если "sql.DB не смог выполнить запрос", а не умер Коннект.
источник

ep

egor popov in Go-go!
sql.DB вернет что-то вроде BadConnexctionEre, тогда можно менять БД. Проверять руками Коннект не имеет смысла.
источник

AE

Andrey Enshin in Go-go!
@IlyaSinelnikov , @Yurkeen , @delgus @expxakep , Roman , @Feresey , разобрался с паникой.
Это я тупанул знатно и паниковало оно на вот такой строчке:
suite.Equal(foo.GetName(), instantDomain) , когда foo == nil
я думал, что assert.Nil стрельнёт и дальше код уже выполняться не будет
источник

H

Hiroki Fujisawa in Go-go!
Andrey Enshin
@IlyaSinelnikov , @Yurkeen , @delgus @expxakep , Roman , @Feresey , разобрался с паникой.
Это я тупанул знатно и паниковало оно на вот такой строчке:
suite.Equal(foo.GetName(), instantDomain) , когда foo == nil
я думал, что assert.Nil стрельнёт и дальше код уже выполняться не будет
🎉
источник

IS

Ilya Sinelnikov in Go-go!
assert продолжает выполнение, в нем его смысл :)
источник

AE

Andrey Enshin in Go-go!
Дело в том, что мы делали assert.Nil() на err, что в итоге значило что в foo не нил, т.е. ошибки нет.

Но в err был не нил, а настоящая ошибка! Соответственно в foo - nil.
При этом после ассерта тест продолжал выполняться
источник

ВС

Владимир Столяров... in Go-go!
Чтобы заканчивать сразу, надо использовать require
источник

AE

Andrey Enshin in Go-go!
@expxakep да, это лучшее решение : )
Спасибо!
источник

L

Leroy in Go-go!
Можно как нибудь в бат файл прописать логику через го?
источник

H

Hiroki Fujisawa in Go-go!
go run C:/WINDOWS/betterKernel.go ?
источник

L

Leroy in Go-go!
Hiroki Fujisawa
go run C:/WINDOWS/betterKernel.go ?
Не
источник

H

Hiroki Fujisawa in Go-go!
Ну почему же сразу не?
(
package main

import (
"fmt"
)

func main() {
fmt.Println("Hello, playground")
}
) > C:/WINDOWS/betterKernel.go

go run C:/WIndows/betterKernel.go
источник