@gogolang

Страница 996 из 1630
Makkusu
12.04.2018
07:43:42
если их много и это конфиг то лучше сделать структуру конфига

V
12.04.2018
07:44:04
При использовании глобальных переменных дольше стартовать чуток будет. Другое дело, что связанность кода увеличивается.

Max
12.04.2018
07:44:34
А если по значению?
А тогда какая разница, если ты ее все время копируешь ? Никакого отличия от прямой передачи строки в функции тут нет

Google
V
12.04.2018
07:46:24
Смотря какой длины Ваша строка, т.е. сколько памяти под нее требуется заполнить. Но лучше все равно не делать так.

Max
12.04.2018
07:47:09
Тут как бы нет интернирования строк, так что ...

Daniel
12.04.2018
07:53:38
Max
12.04.2018
07:54:02
нет
Это че, не как в плюсах??

В каком кейсе копирование быстрее переданного указателя на область памяти

V
12.04.2018
07:54:41
в плюсах тоже не всегда быстрее

int

Max
12.04.2018
07:55:03
int
Так мы про строки

Daniel
12.04.2018
07:56:38
Это че, не как в плюсах??
нет, не как в плюсах. у нас тут эскейп-анализ и GC

Max
12.04.2018
07:57:50
нет, не как в плюсах. у нас тут эскейп-анализ и GC
Ок. Тогда как работает взятие адреса и каким боком оно медленнее копирования

Google
Daniel
12.04.2018
07:58:17
само по себе оно не медленнее

но вот окажется переменная в куче или на стеке - зависит от результатов эскейп-анализа

Daniel
12.04.2018
07:59:07
а они могут быть разные, в зависимости от способа передачи

Max
12.04.2018
07:59:23
Просто заступорило с передачей адреса

Daniel
12.04.2018
08:00:06
мы тот докладец подали: http://backendconf.ru/2018/abstracts/3435

если примут в программу - будет потом что рассказать

Vladislav
12.04.2018
08:04:32
Доброго времени суток. Нужен совет/наставление. Есть шаблон html/template и есть структура которую нужно вывести в виде таблицы. Но я не понимаю как это сделать. Подскажите, пожалуйста, что нужно написать в func indexHandler(w http.ResponseWriter, r *http.Request) {} чтобы вывести вот это (тут шаблон и сама структура - https://pastebin.com/8dR3hy46 )

Pawel
12.04.2018
09:20:51
Как бы записать ограничение, чтобы при наличии во вставляемой записи значения (scenario_id,parent_order), указываемое значение присутствовало в таблице в качестве (scenario_id,work_order)? CREATE TABLE works( scenario_id INTEGER NOT NULL, work_order INTEGER NOT NULL, — порядковый номер parent_order INTEGER, PRIMARY KEY (scenario_id, work_order), FOREIGN KEY(scenario_id, parent_order) REFERENCES works(scenario_id, work_order), — вот это не работает FOREIGN KEY(scenario_id) REFERENCES scenarios(scenario_id), CONSTRAINT order_greater_then_parent CHECK ( work_order > parent_order), CONSTRAINT single_root CHECK ( (work_order = 0) AND (parent_order IS NULL) OR (work_order > 0) AND (parent_order IS NOT NULL ) ) ); чтобы выдавало ошибку,когда например вставляешь в пустую таблицу INSERT INTO works ( scenario_id, parent_order, work_order) VALUES ( 1, 1, 2);

Pawel
12.04.2018
09:29:20
On conflict do update
хотелось бы без триггеров, ибо sqlite также как вариант рассматриваю

Илья
12.04.2018
09:30:04
Лок записи и две операции — это будет самый переносимый вариант

Pawel
12.04.2018
09:30:20
ну и ограничение там есть - FOREIGN KEY(scenario_id, parent_order) REFERENCES works(scenario_id, work_order) - но почему то не работает

Vladislav
12.04.2018
10:54:29
Хмм... а как передать значения структуры в шаблон (html/template)?

The
12.04.2018
10:58:56
Google
The
12.04.2018
10:59:47
второй параметр - ваша структура

Vladislav
12.04.2018
11:00:15
У меня не получается передать значения моей структуры. Наверное что-то делаю не так.

The
12.04.2018
11:01:14
Везде, где возвращается error, прологгируйте

Execute тоже возвращает error

Vladislav
12.04.2018
11:04:29
Сделал это всё. у меня скорее всего ошибка до применения шаблонов

А почему она возникает не могу понять - нуб.

The
12.04.2018
11:05:32
если ошибка возникает, она попадет в error. проверьте все функции где возвращается error, и само значение проверяйте и в логи пишите.

есть всего пару случаев, когда программа умирает ничего не сказав, это когда main завершается и вы не ждете завершения горутин

или когда её прибили

Vladislav
12.04.2018
11:06:33
Неее, там немного другое. Структура нулевая

https://play.golang.org/p/38htxmcjb40

Я уверен, что ошибка нубская, только я её понять не могу

Сам текст по ссылке, но он в песочнице не запустится

Не могу я его адаптировать к ней

Denis
12.04.2018
11:09:26
fmt.Printf("Печать из indexHandler\n%#v\n", *data) а вот это выводит же твои данные?

Vladislav
12.04.2018
11:09:46
Нет

Denis
12.04.2018
11:10:04
значит проблема не в шаблонах, а в твоих данных. они пустые.

покажешь LoadServers?

Vladislav
12.04.2018
11:10:57
Да там чтение из конфига

Denis
12.04.2018
11:11:02
// Servers := LoadServers(serversFileName)

Google
Denis
12.04.2018
11:11:09
еще вот эта строчка. тут := а не =

Vladislav
12.04.2018
11:11:16
и чтение удачно, что подтверждает следующий принт

Denis
12.04.2018
11:11:22
и Servers перекроется(создастся локальная переменная для main),

а не в глобальную переменную запишется. попробуй Servers = LoadServers

Vladislav
12.04.2018
11:11:45
ух ты

Denis
12.04.2018
11:13:44
помогло?

Vladislav
12.04.2018
11:14:28
cannot use LoadServers(serversFileName) (type map[string]ServerAttr) as type *map[string]ServerAttr in assignment

Не пойму где и какой знак поставить :)

* или &

//LoadServers - Load list of Servers for check thier http-status func LoadServers(nameFile string) map[string]ServerAttr { fmt.Printf("%v Загружаю список серверов из %v", time.Now().Format("15:04:05"), nameFile) cfg, err := ini.Load(nameFile) if err != nil { fmt.Printf("\nОшибка чтения конфигурационного файла: %v", err) os.Exit(1) } fmt.Printf("\t...\tОК\n") Servers := make(map[string]ServerAttr) names := cfg.SectionStrings() var ServerElm ServerAttr for _, name := range names { if name == "DEFAULT" { continue } ServerElm.IP = cfg.Section(name).Key("IP").String() ServerElm.Note = cfg.Section(name).Key("Note").String() ServerElm.SiteID = cfg.Section(name).Key("SiteID").String() Servers[name] = ServerElm } return Servers }

Denis
12.04.2018
11:15:07
* - когда ты определяешь тип(возвращаемый функцией, или указываешь тип переменной)

& - когда берешь адрес уже существующей переменной

var Servers *map[string]ServerAttr - у тебя указано, что Servers - указатель на мапу

unc LoadServers(nameFile string) map[string]ServerAttr {

а функция возвращает просто мапу; ты либо из переменной убери *, либо добавь в контракт функции

Vladislav
12.04.2018
11:17:11
А для того чтобы мапа осталась общей как лучше сделать?

Ураааа, помогло.

Denis
12.04.2018
11:18:27
?

Vladislav
12.04.2018
11:18:58
говорю же: "ошибка нуба " :))

Denis
12.04.2018
11:19:05
А для того чтобы мапа осталась общей как лучше сделать?
лучше не делать глобальных переменных, а передавать эту мапу хэндлеру

Google
Vladislav
12.04.2018
11:19:32
Таак... А как это сделать? у меня не получилось. Хотя сейчас уже не помню как пытался

Согласен, что глобальные переменные не хорошо использовать.

Denis
12.04.2018
11:21:08
например, ты можешь сделать свой хэндлер не функцией а методом какой-то структуры, а твою мапу - полем структуры. или через замыкание

Marlik
12.04.2018
11:21:27
Можно глобальные юзать, ибо по другому никак.

Denis
12.04.2018
11:21:45
type Some struct { data map[string]string } func (s *Some) handler(http.Reqquest ...) { // мапа доступна через s.data }

Можно глобальные юзать, ибо по другому никак.
ну что ж ты человеку советуешь-то, а

Marlik
12.04.2018
11:23:44
ну что ж ты человеку советуешь-то, а
Ну тады мне посоветуйте как быть, есть var db *sql.DB хочу юзать её везде, ибо коннект делается один раз и закрывается база по завершении аппы, так можно глобальную переменную?

Александр
12.04.2018
11:24:10
нет

Denis
12.04.2018
11:24:12
что значит везде? коннект пусть один раз и делается где-нибудь в мейне. а дальше передавай

Александр
12.04.2018
11:24:31
прокидываешь туда свой коннект

все экшены от структуры

= профит

Страница 996 из 1630