Size: a a a

Golang Developers — русскоговорящее сообщество

2020 July 24

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
хотя вообще странная хрень
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
пользовательские запросы изменяют SomeEmbeddedType
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
зачем почему
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Ну это хрень 100℅
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Pr
type BLProcessor struct {
 State            string
 SomeEmbeddedType *SomeEmbeddedType
}

func (b *BLProcessor) Process(bla string) string {
 if bla == "value" {
   b.State = "process"
   b.SomeEmbeddedType = &SomeEmbeddedType{
     Field: bla,
   }

   return b.SomeEmbeddedType.doSome().Result
 }
 return ""
}

type SomeEmbeddedType struct {
 Field string
}

func (s SomeEmbeddedType) doSome() *Result {
 return &Result{
   Result: s.Field + "1",
 }
}

type Result struct {
 Result string
}

type Repo interface {
 GetSome(s string) (string, error)
 SaveSome() error
}

func processReq(db Repo, bl *BLProcessor) http.HandlerFunc {
 return func(w http.ResponseWriter, r *http.Request) {
   someValue := r.URL.Query().Get("value")
   // этот парень, например, сбегал в бд
   outDB, err := db.GetSome(someValue)
   if err != nil {
     println(err)
     return
   }
   
   // этот парень распедалил бизнесс-логику
   out := bl.Process(outDB)
   
   w.Write([]byte(out))
 }
}
Пока абсолютно не понятно, зачем вам нужны поля State и SomeEmbeddetType, если вы их используете единожды внутри одного метода.

Вам нужно двигаться в сторону фабрики, видимо.
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Это чисто пример. Как может случаться
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
x-foby
Пока абсолютно не понятно, зачем вам нужны поля State и SomeEmbeddetType, если вы их используете единожды внутри одного метода.

Вам нужно двигаться в сторону фабрики, видимо.
осуждаю фабрики
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
звучит по-джавистски
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
О, боже
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
Pr
Это чисто пример. Как может случаться
закрой SomeEmbeddedType мьютексом, в данном случае этого хватит
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
но я думаю можно было бы написать получше
источник

P

Pr in Golang Developers — русскоговорящее сообщество
И вот хочу понять, верно ли сейчас понял:
- просто не хранить в типах состояние
- если нужно хранить, вязать мьютексами
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
В целом да
источник

P

Pr in Golang Developers — русскоговорящее сообщество
- пользовательские запросы толкьо роутят данные, но не меняют
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Но в вашем случае достаточно первого пункта
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Я хочу осознать в целом
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
Pr
И вот хочу понять, верно ли сейчас понял:
- просто не хранить в типах состояние
- если нужно хранить, вязать мьютексами
хранить в типах состояние можно
вязать мьютексами, если у вас горутины конкурентно читают и пишут в это состояние
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Уложить у себя в голове
источник

P

Pr in Golang Developers — русскоговорящее сообщество
А если я передам в хендлер тип по-значению?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
В абсолютном большинстве случаев состояние хранить не нужно.
Если вы храните состояние, тогда используйте по каждый запрос отдельный экземпляр объекта.
Всё очень просто.
источник