Anonymous
Mikhail
Всем привет, начал изучать go, вопрос такой у меня через cmd управляется go с различными командами а через терминал нет в VS code + подсказок нет при написании языка подскажите как настроить. Заранее спасибо.
Mikhail
И есть в go какой нибудь nodemoon как в node js чтобы сервер заного не запускать каждый раз ?
Maks
Что значит каждый раз?
Maks
Когда локально изменения внес?
Mikhail
Да
Mikhail
То есть сохранил и сразу же изменения на сервере
Mikhail
Понял
Maxim
https://docs.drone.io/quickstart/cli/
я этим пользуюсь, легче жить и в продакшн потом с dev переходить с теме же сценариями.
Null
Go: вы должны знать это, прежде чем использовать Defer
https://dev-gang.ru/article/go-vy-dolzhny-znat-eto-prezhde-czem-ispolzovat-defer-5vfvem6a0o/
@Golang_google
Anonymous
Anonymous
Спасибо, посмотрю где мне может это пригодится
Anonymous
Anonymous
Denis
Denis
А каким образом определяется после чего выполняется функция f.Close?
Просто в языках без defer может появиться необходимость писать f.Close несколько раз, например
func() {
f.Open()
try {
f.Work()
}catch(){
f.Close()
return
}
f.Work2()
f.Close()
return
}
Хотя можно было бы сэкономить
func() {
f.Open()
defer f.close()
try {
f.Work()
}catch(){
return
}
f.Work2()
return
}
Anonymous
🔥
Anonymous
Emil
В вузе на плюсах нам говорили, что goto это моветон и подобное только в ассемблере без цикличных структур можно юзать. Всегда удивлялся, что в го его используют
Не помню правда, на сколько функционал пересекается
Denis
Maxim
Maxim
Демоны построены на for бесконечном.
Шипулин
Всем привет, подскажите пожалуйста литературу для начинающих) та с которой можно начать изучение Go
Anonymous
Шипулин
благодарю
Anonymous
А я в книжке случайно увидел, очень понравилось и начал использовать)
Anonymous
Может я ошибаюсь, но мне кажется, что тут goto очень кстати
xasai.denet
здесь кстати цикл for и операторы break/continue
xasai.denet
Чем здесь бесконечный цикл отличается от этой конструкции с goto?
xasai.denet
тут энивей прерывание на чтение с клавиатуры, так что тут не бывать 100% нагрузки
xasai.denet
В качестве небольшого куска кода и практики использования, наверное этому есть место. Но когда этот код будет состоять не из 20 строчек, люди не возлюбят читать ваши творения
Anonymous
Да ладно, это консольная считалочка, какая тут разница?)
xasai.denet
Для циклов старайтесь использовать подходящие конструкции(for break continue) Не зря ведь их придумали? Операторы goto и их метки, можешь применять когда будешь писать на ассембллере.
Anonymous
Anonymous
На Go всего неделю, так что могу где-то ошибаться
Anonymous
Трудно после питона привыкнуть к {}, поэтому использовал это, по привычке
Maxim
Andrey
Andrey
Andrey
Andrew
хотя я внимательнее прочитал твое сообщение выше..ты и сам разобрался)
А насколько тогда правильная практика писать
defer { f() }() вместо defer f()? Я часто вижу код где даже простейшие функции defer-ят по первому способу, хотя второй меньше когнитивных усилий требует. Мне казалось что по первому способу только джуны делают, а может я чего-то не понимаю и на самом деле это подход сениоров? Получается первый подход безопаснее, тем более компилятору по барабану и он может первый способ переписать во второй, не создавая анонимную функцию/литерал. У меня-то в defer однострочник, поэтому проглядел, а линтер-правила на это дело нету: всё же
x := f.inc()
defer fmt.Println(x)
более прозрачно чем
defer fmt.Println(f.inc())
Andrey
А насколько тогда правильная практика писать
defer { f() }() вместо defer f()? Я часто вижу код где даже простейшие функции defer-ят по первому способу, хотя второй меньше когнитивных усилий требует. Мне казалось что по первому способу только джуны делают, а может я чего-то не понимаю и на самом деле это подход сениоров? Получается первый подход безопаснее, тем более компилятору по барабану и он может первый способ переписать во второй, не создавая анонимную функцию/литерал. У меня-то в defer однострочник, поэтому проглядел, а линтер-правила на это дело нету: всё же
x := f.inc()
defer fmt.Println(x)
более прозрачно чем
defer fmt.Println(f.inc())
как по мне, правильно использование дефер, это не забыть закрыть, то что открыл (подключил/отключил, заблокировал/разблокировал) когда оборачиваешь в анонимную функцию, ну думаю что компилятор раскроет ее (тк она прямо аналог в других языках лямбда-функции), что иначе еще называют замыканием. если ты именно хочешь изменить объект после выполнения, то только так захватишь объект/переменную из функции первого класса
whois
Ребят, у кого-нибудь есть пример синглтона, который не юзает переменные на уровне пакета?
Maks
Чего?
Maks
Что ты черт побери такое несешь)
Μαριούπολη
кто может подсказать как это решить?) Начал знакомиться с докером и сразу ошибочка
Μαριούπολη
Μαριούπολη
Andrey
А тебя не смущает что даже IDE твой go mod красным просвечивает?)
George
George
George
Да, спасибо, нашел хорошую статью
много их. Например эта неплохо объясняет взаимоотношения GOPATH и модулей.
https://levelup.gitconnected.com/using-modules-and-packages-in-go-36a418960556
Anonymous
авто мапперами пользуетесь? какой посоветуете?
whois
Ребят, скажите пожалуйста, а почему sub-benchmark запускается n+1 раз?
Т.е., если я запускаю так:
for _, bc := range benchCases{
b.Log(bc.name)
b.Run(bc.name, func(b *testing.B) {
for i := 0; i < b.N; i++ {
b.Log("running: ", i)
}
})
}
running: 0
running: 0
running: 1
....
Т.е. running: 0 - два раза повторяется
Sardor
Ребят, я правильно понимаю, что в x и y значение канала запишется после того, как обе горутины завершат свою работу? или вторая горутина будет ждать, пока завершится первая (но тогда, как я понимаю, отпадает их смысл)
func main() {
s := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(s[:len(s)/2], c)
go sum(s[len(s)/2:], c)
x := <-c
y := <-c
fmt.Println(x, y, x+y)
}
Gameover
не, отработает любая из них и пройдет 1 чтение, а затем как вторая - второе
Gameover
хотя что там делается в этом sum конечно
Дмитрий
Ребят, я правильно понимаю, что в x и y значение канала запишется после того, как обе горутины завершат свою работу? или вторая горутина будет ждать, пока завершится первая (но тогда, как я понимаю, отпадает их смысл)
func main() {
s := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(s[:len(s)/2], c)
go sum(s[len(s)/2:], c)
x := <-c
y := <-c
fmt.Println(x, y, x+y)
}
Код выполнится корректно. Вторая горутина просто подождет пока произойдет чтение из канала, и запишет туда свое значение
Emil
Есть у кого опыт работы с дополненной реальностью?
Я что-то смотрю все очень плохо по фреймворкам, только что-то в сторону компьютерного зрения есть
Emil
Да мне не принципиально, просто хочется что-то в направлении этом
Emil
Вот да, на питоне ещё наверняка куча всего и на плюсах, судя по гитхабу. Хотелось на го именно попробовать)
Maks
Ну по сути ты либо юзаешь то что есть, это вуффория, аркит и на андроиде не помню как зовется
Maks
И там смотришь че да как
Maks
Либо сам пишешь полностью)
Emil
Хм... Гляну списочек, спасибо. Я ещё давно на котлине смотрел, не приглянулось
Emil
На чем?
Emil
Спасибо
Пасаны го делать фреймворк для ar на го))0)
Emil
(блин я слишком тупой но очень хочется)
Emil
Ну
Долгая и веселая дорога)