Size: a a a

2020 March 20

/

/dev/null in Go-go!
Дмитрий
долго объяснять, сейчас покажу кодом
ну если не очень хочется так делать то через omitemty
источник

D

Doublegrey in Go-go!
а кто это
а в чем проблема?
[]byte не fixed-size, поэтому binary.Write возвращает invalid type main.Message
источник

а

а кто это in Go-go!
Doublegrey
[]byte не fixed-size, поэтому binary.Write возвращает invalid type main.Message
ну значит никак
источник

Д

Дмитрий in Go-go!
источник

Д

Дмитрий in Go-go!
вот пример проблемы скрытия полей
источник

/

/dev/null in Go-go!
Дмитрий
вот пример проблемы скрытия полей
и не лень тебе было)
источник

Д

Дмитрий in Go-go!
пишется за 3 минуты
источник

Д

Дмитрий in Go-go!
но речь не об этом, а о том, что то, что вернул usecase надо враппить в свой тип кастомный, со скрытыми полями.
источник

а

а кто это in Go-go!
а как бы вы решили эту проблему вне Go?
источник

Д

Дмитрий in Go-go!
ну вообще, я кажется понял как можно сделать
источник

S

Sa in Go-go!
как правильно узнать что можно закрыть канал?
К примеру:

package main
import "fmt"
func worker(out chan interface{}) {
out <-1
out <- 3
out <- 4
}
func main() {
ch := make(chan interface{})
go worker(ch)
for {
 select {
 case val := <-ch:
  fmt.Println("val", val)
 }
}
}


и скажем так worker это черная коробка
у меня сейчас deadlock
я должен как то сделать close(ch) но что-то не усиживается как
источник

а

а кто это in Go-go!
Дмитрий
ну вообще, я кажется понял как можно сделать
1. сделать разные энкодеры(со своим интерфейсом например)
2. разные структуры
3. сделать поле-флаг по которому можно проверять отдавать или нет эти данные
источник

а

а кто это in Go-go!
вариантов много
источник

C

Calculon in Go-go!
Sa
как правильно узнать что можно закрыть канал?
К примеру:

package main
import "fmt"
func worker(out chan interface{}) {
out <-1
out <- 3
out <- 4
}
func main() {
ch := make(chan interface{})
go worker(ch)
for {
 select {
 case val := <-ch:
  fmt.Println("val", val)
 }
}
}


и скажем так worker это черная коробка
у меня сейчас deadlock
я должен как то сделать close(ch) но что-то не усиживается как
Закрыть канал можно кода писатели перестали в него писать
источник

C

Calculon in Go-go!
Воркерам пуляй waitgroup
источник

C

Calculon in Go-go!
И жди когда они закончат работу
источник

а

а кто это in Go-go!
он тут один же
источник

S

Sa in Go-go!
а кто это
он тут один же
это для примера
источник

C

Calculon in Go-go!
а кто это
он тут один же
Ну я сразу под горутины
источник

а

а кто это in Go-go!
Sa
как правильно узнать что можно закрыть канал?
К примеру:

package main
import "fmt"
func worker(out chan interface{}) {
out <-1
out <- 3
out <- 4
}
func main() {
ch := make(chan interface{})
go worker(ch)
for {
 select {
 case val := <-ch:
  fmt.Println("val", val)
 }
}
}


и скажем так worker это черная коробка
у меня сейчас deadlock
я должен как то сделать close(ch) но что-то не усиживается как
конкретно в этом коде нужно добавить в конец worker close(out)
источник