Как стать автором
Обновить

Комментарии 10

«От себя добавлю, php и Go немного похожи, » — чтооооо?
Посмотрел Ваш код, пройдите gotour сначала ваш код ужасен.
Начиная с того, что при перезапуске сервиса вы удаляете таблицы и снова их создаете.
Аргументируйте, что именно не так.
Начиная с того, что при перезапуске сервиса вы удаляете таблицы и снова их создаете.
— где это в моем коде? Сервис инициализируется один раз — при установке сервера. Далее при старте это простые обращения к БД и отображение результатов.
PidFile := postcode.Init(Versio) ->  err = InitMysql() ->   _, err = Db.Exec("DROP TABLE IF EXISTS citys ")


что значит при установке? А если служба упала и надо рестартануть?

P.S.
Зачем вы так делаете не пойму. Что мешает писать нормально?
str 		:= "(SELECT NAME FROM indexes WHERE TOP_ID in" 
    for i:= level-2; i>tLevel; i-- {
	str		= fmt.Sprintf("%s (SELECT ID FROM %s WHERE TOP_ID in ", str, table[i])
    
    } 
    str			= fmt.Sprintf("%s (%s)", str, id)
    for i:= level-1; i>tLevel; i-- {
	str		= fmt.Sprintf("%s )", str)
    } 
    fmt.Printf("%s\n",str)  


Могу написать еще, но не вижу смысла. А так куча антипаттернов.
ещЁ раз
PidFile := postcode.Init(Versio) -> err = InitMysql() -> _, err = Db.Exec(«DROP TABLE IF EXISTS citys „)

err = InitMysql() — этого вызова не происходит при рестарте службы

и приведенный кусок кода формирует один sql, да не очень красиво, чистый sql
Ну если честно у Вас гавнокод. Не обижайтесь.
Если считаете иначе, покройте данный код тестами.

initdbPtr		:= flag.String("init", "", " - Path to file data, create database and init params")


Это должна быть отдельная структура, не говоря уже о глобальных переменных (DB)
Я не обижаюсь. Я стараюсь учится и понять как правильно. Да и Вы правы что глобальные переменные надо убирать, я сам написал в статье. Постараюсь переписать код, что бы он был удобочитаемым. Да и тесты я добавлю.
Как человек, который тоже учит Golang и вообще современные ЯП — конкатенация строк через "+" не самое лучшее решение. В Го можно пользоваться fmt.Sprintf() для таких целей, а у вас много где.
Но это, вполне возможно, субъективно.

И у Го принято писать тесты прямо рядом с файликом основной программы в формате "*your_filename*_test.go" и тестировать с помощью пакета testing
Спасибо, я конкатенацию строк в проекте переписываю на strings.Builder, как будет работать выложу, проект как пример компиляции кода(вставки с разных проектов), хочется узнать как правильно. И с тестирование базовую теорию я прочитал, хочется все стороне этот вопрос изучить.
Многострочные строковые переменные, надо не в конкатенацию убирать, а грависом (``) обособлять
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории