Eugene
да именно
Karey
c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) go weather() <-c fmt.Pprintf("Погода %2.f°С %s\n", m.TempC, m.SityWeather)
Karey
Сделай такой main и по Ctrl+C увидишь результат)
🎉
да именно
Не, не помогло.
Evgeniy
откуда
🎉
type Weather struct { ... } type MySityWeather struct { TempC float64 `json:"tempc"` SityWeather string `json:"sityweather"` } var m MySityWeather func weather() error { var r Weather ... m.TempC = r.CurrentObservation.TempC m.SityWeather = r.CurrentObservation.Weather time.Sleep(5 * time.Minute) } return err }
Karey
Не в горутине sleep
Karey
А в main
🎉
@MarlikAlmighty вот это
Тада бы не работала вторая аналогичная горутина. С указателем попробую.
Alexander
Кроме того, в этом коде race condition - гортина пишет, а main читает. Так делать нельзя. Что вообще хочется получить? Периодический запрос на внешний ресурс и отображение погоды в цикле?
Alexander
Указатель ни при чем
🎉
А в main
Зачем? В main у мну сервак ловит хэндлеры.
Eugene
http://golang-book.ru/chapter-10-concurrency.html
🎉
Понял, пойду читать.))
Karey
Зачем? В main у мну сервак ловит хэндлеры.
Судя по коду, main у тебя просто плодит горутины, которые не успевают выполниться, прежде чем программа завершится
Eugene
после первого же скрина описана твой случай
Evgeniy
блин если юзаишь внешнии либы для чегото - проверь простым способом а правильно ты их юзаешь?
Alexander
Ну да.
Ну смотри, ты хочешь сделать цикл, отображающий значения из структуры. Но в коде main цикла вообще нет - есть только вывод один раз и всё. Он выполняется, а потом что там в горутине происходит никто не проверяет
🎉
Судя по коду, main у тебя просто плодит горутины, которые не успевают выполниться, прежде чем программа завершится
Программа не завершается, это сервер который слушает порт. В main две горутинки, которые по замыслу должны обновлять и погоду и курс.
Karey
@MarlikAlmighty и Printf должен вызываться в горутине, иначе как тебе выше и сказали будет race condition
Eugene
тебе надо в таком случае не в глобальную писать, а в канал
Eugene
и канал слушать тем кому надо
Alexander
Просто для эксперимента, сделай sleep на несколько секунд перед Pprintf
🎉
Ну я понял, пойду чидадь, и переписывать.
Evgeniy
это не бред?
Alexander
Кстати, слово city пишется так
🎉
А почему это должно быть бредом? Структуры разные жи.
Evgeniy
Понял, спасибо.
вас батенька на раст или хаскель))))
Evgeniy
для усложнения мозга
🎉
Книжку по расту я качнул на всякий)))
Anonymous
вас батенька на раст или хаскель))))
не ну раст еще понятно, а на хаскеть только если не поможет раст)))
Evgeniy
не ну раст еще понятно, а на хаскеть только если не поможет раст)))
ну можно на пхп 7 стрикт а перед этим на вордпрес с гавнокучами)))!
🎉
Чес гря када много пишешь, порой теряешься какое названьице придумать той или иной структуре, указателю и прочее...
Eugene
тогда почитай про DDD там как раз рапрямляет как что называть :)
🎉
Посмотрю.
Anonymous
ну можно на пхп 7 стрикт а перед этим на вордпрес с гавнокучами)))!
после пресса с пыхой можно потерять связь с космонавтом и больше не вернуться на орбиту....
🎉
Я после perl'а, мне наверное простительно))
Evgeniy
после пресса с пыхой можно потерять связь с космонавтом и больше не вернуться на орбиту....
Друзья попросили - взял противогаз-дебагер и всякие штуки и погрузился в ......
Evgeniy
good friends .... 🤠
легаси ёпрный бабай
Artem
почитал это все... ппц у вас тут квест был... поржал спасибо. weather: time.Sleep(5 * time.Minute) в main пусто потому, что 5 минут еще не прошло :)
Eugene
слип после присвоения стоит )
Artem
слип после присвоения стоит )
область видимости, значения не возвращаются, слип вешает ф-ию. Нужно или вернуть их из ф-ии или использовать указатель.
Eugene
те если в функции в глобальную переменную писать и потом слип вызвать, то пока слип не отмокнет запись в переменную не произойдет?
Eugene
и какая разница в том указатель там или нет
Eugene
если она глобально объявлена
Pawel
Неа, вряд ли получится вменяемо, разве что какое-то подмножество HTML Go очень плохо подходит для DSL
ну собственно вот как я это вижу import . "github.com/fpawel/gohtml" var x = Div( H1A(Attrs{ Width:"10px", Colspan:"12", }), H2(), Div( P(), Li(),Ul(), ), ) а здесь структуры данных https://github.com/fpawel/gohtml/blob/master/gohtml.go Пока всё сырое, но идея думаю ясна
Eugene
из горутины в глобальную переменную.. серьезно?
это уж не ко мне вопрос :) просто если так случится и не будет race то вполне все сработает
Eugene
но это не точно
Artem
это уж не ко мне вопрос :) просто если так случится и не будет race то вполне все сработает
я конечно что то определенно мог пропустить, но еще буквально вчера так делать было нельзя. Для этого собственно и были каналы.
Artem
Они просто никуа не поняли, а я не смог весь проект показать.
да пофиг, читать было весело этот ванга режим )))
Eugene
я специальист телепьатъ со стажем между прочим
Artem
Слип стоит после того как структурке отдали значения.
круто, и оно туда значит попало? (я код не видел, но раз так то инфы достаточно)
🎉
Да и ладно, смех смехом, а у меня это работает. И каналы в этом проекте не нужны.
Karey
А ты сделай go run -race main.go
Artem
Да и ладно, смех смехом, а у меня это работает. И каналы в этом проекте не нужны.
мне сложно представить как оно может работать, но вы понимаете что порядок выполнения не гаррантирован и никто и никогда не знает что и когда вызовется ? )
🎉
func main() { //тут кода хрен знает скока go weather() go course() router := fasthttprouter.New() router.GET("/", Root) router.POST("/parser", Parse) log.Fatal(fasthttp.ListenAndServe(conf.ListenLocal, router.Handler)) } course() работает вопреки вашим хихи, этот же вариант работает в другом проекте, но там передавал через мапу, здесь я пытаюсь через структуру.
Eugene
вот кстати вопрос, чем грозит в го race? ну кроме неактуальных данных
Eugene
@MarlikAlmighty у тебя отладчик есть? ты уверен что ты на самом деле данные пишешь?