Oleg
не "встроил", а "имплементировал", сказал бы Павел
Pavel
но не сказал
Brown
hdhog
мужики) а подскажите как по следующему вопросу.
можно как то "вытащить" требуемые переменные для шаблона text/template? в дока чет про это ничего нет
Aleksandr
Oleg
Типа из шаблона
{{ .Value1 }} - {{ .Value2 }}
вытащить "Value1" и "Value2"
да?
hdhog
да
hdhog
то есть у меня есть шаблоны. перед заполнением шаблона я хочу запросить ввод переменных. сам собой переменные разные
hdhog
в разных шаблонах
hdhog
какой то логики в шаблоне не планируется пока)
Oleg
Лучше где-то дописывать рядом с самим шаблоном, какие переменные ему нужны. Потому что, походу, иначе как проходом по дереву парсинга переменные не вытащить.
Вроде такого:
type MyTemplate struct {
Tmpl *text.Template
Values []string
}
Aleksandr
hdhog
затем что без заданных переменных шаблон будет не верно обработан.
а так как шаблоны с разным набором переменных. нужно и запрашивать переменне динамически.
hdhog
hdhog
а кейс прост.
в шаблоне каркас скрипта, как не прискорбно это cmd\bat. чтобы данный скрит подготовить к запуску на ПК. нужно задать некоторые переменные. имя пк например\ имя сервера куда писать логи.
hdhog
а так как скрипт будет испольняться на множестве компов. для каждолго из них могут быть свои значения переменных. которые сам ПК знать не может
Oleg
Множество возможных переменных как-то ограничено? Или структуры нет никакой?
Aleksandr
ну логично. но почему в шаблоне разные переменные? почему нельзя if'ов наделать итд, и подавать в шаблон стандартную структуру?
Aleksandr
у вас что, на разные компьютеры разные шаблоны?
hdhog
hdhog
у вас что, на разные компьютеры разные шаблоны?
да, вполне. один скрипт должен збрать лог из пути в котором есть имя ПК или версии ПО. на разных ПК разная версия например. или тот же лог в другом месте.
так же для разных пк всегда разные сервера с логами. точнее для групп пк
hdhog
нет. не получится перечислить.
hdhog
если нужно будет задать переменную которой нет в подгтовленном наборе? тогда что править исходники приложения?)
Aleksandr
Oleg
hdhog
hdhog
Мерль
В слайсе, например?
Aleksandr
их задает пользователь.
то есть у вас есть заданный набор переменных в шаблонах, которые уже скопилированы, но почему-то нельзя к этому заданному набору привязать одну структуру.
hdhog
не проблема. шаблон сейчас описывается в yaml. туда можно конечно добавить список требуемых переменных отдельным полем. но тогда есть вероятность того, когда будут готовить шаблон могут забыть указать переменную.
hdhog
hdhog
по этому и был вопрос как из шаблона вытащить переменные которые он использует.
Aleksandr
hdhog
именно
hdhog
то есть в идеале хотелось нечто такое получить
app --template tmpl.yml --name app --address test
а в шаблоне уже
start {{.app}} {{.address}}
Oleg
А вдруг подсунут start {{ .template }}? :))
hdhog
да полюбому подсунут 😄
Mikalai
hdhog
так и делаю)
hdhog
его надо ведь заполнить правильно ;) чтобы ключи верные были.
Мерль
hdhog
думал об этом. как запасной вариант
Илья
https://golang.org/pkg/text/template/parse/
Илья
куда то туда копать
engelbart
Что то я забыл как математика нам завещала float64 сравнивать на близость
engelbart
вариант с abs < tolerance мне не нравится потому что там масштабы разные бывают
Илья
var EPSILON float64 = 0.00000001
func floatEquals(a, b float64) bool {
if ((a - b) < EPSILON && (b - a) < EPSILON) {
return true
}
return false
}
Mike
engelbart
Mike серьезно?
engelbart
в жизни такого не видел
Mike
Не, шутки шучу
Mike
Серьезно это как выше
engelbart
с епсилоном то ясно
engelbart
но я его угадать не могу, у меня там 10^-9 бывает и 10^9
Илья
engelbart
ну смотри, сравниваем два float в один проход там десятьв деввятой значения
engelbart
в другой проход десятьв минус девятой
engelbart
данные разные
engelbart
а эпислон 1
Илья
для 10-9 придется кастомныйй кейс лепить
engelbart
я вот думал есть какой нитьь общепринятый способ, вычислить эпсилон налету
engelbart
или хоть размышления какие
Илья
но я не сталкивался с такими задачами и не плодил таких общих решений
engelbart
буду епсилон высчитывать как max / 10^5
engelbart
типа пять знаков сопадает и баста
Mike
ну вообще одного должно хватать, ошибка-то обычно не относительная, а абсолютная, и она где-то знаке в 9-10 максимум должна быть, иначе не равны
Mike
просто флоаты близкие к нулю это ж вообще трэш тот еще, когда они сами имеют порядок ошибки при умножении/делении
engelbart
всё так
Сережа
Float - 7 значащих цифр, double - 15. Насколько float'ы близки к нулю - не имеет значения. Есть минимальное принимаемое значение. Ошибка не абсолютная. Регламентировано стандартом IEEE754.
Mike
Сережа
я ваш го не знаю
Mike
догадайся из названия типов, в чем суть
Mike
таки погоди, ты сейчас взял стандарт хз чего
Сережа
float64 видимо соотвествует числу с плавающей точкой с двойной точностью
Mike
го не знаешь
Mike
и что-то утверждаешь?