Size: a a a

2021 June 22

AK

Andrey Kartashov in Go-go!
раздели на более мелкие кусучки, чтобы понять где падает

func (d Dictionary) Find(text []dictionary.Word) (dictionary.Word, int, int) {
if len(text) > 0 {
 token := text[0].Token
 if token != "" {
  if val, ok := d[token]; ok {
   return val, 0, 0
  }
 }
}

return dictionary.Word{}, 0, 0
}


Скорее всего у тебя проблема с text, который модифицируется в соседней горутине после проверки len(text) > 0
источник

AB

Andrey Burov in Go-go!
да всё что там может быть nil из-за чего паника может быть
источник

AB

Andrey Burov in Go-go!
>   if val, ok := d[text[0].Token]; ok {
используй свою же переменную token
источник

AK

Andrey Kartashov in Go-go!
ну да, чтоб уменьши вероятность race
источник

Д

Денис in Go-go!
Там даже не указатель, а ново созданный слайн
источник

AB

Andrey Burov in Go-go!
а какая разница?
источник

AK

Andrey Kartashov in Go-go!
ты его точно нигде не переиспользуешь?
источник

AB

Andrey Burov in Go-go!
он показал же пример https://pastebin.com/tH97Kgc5
источник

Д

Денис in Go-go!
Ну если бы был указатель, то утверждение имело бы место быть

Скорее всего у тебя проблема с text, который модифицируется в соседней горутине после проверки len(text) > 0
источник

AB

Andrey Burov in Go-go!
ну похоже на это, но почему?
источник

AB

Andrey Burov in Go-go!
**чё-то недавно подобное уже было... или мне кажется...
источник

AK

Andrey Kartashov in Go-go!
слайс это указатель
источник

AB

Andrey Burov in Go-go!
нет, но если грубо, то можно считать что так...
источник

AE

Alexey Ermakov in Go-go!
а если не грубо, почему не указатель?
источник

VY

Vladislav Yarmak in Go-go!
text не может модифицироваться, там копия, а не ссылка
источник

AB

Andrey Burov in Go-go!
источник

Д

Денис in Go-go!
Так туда передается инициализированный слайс при вызове метода, если бы было изменение в слайсе структуры какой-то в другом потоке, то могло бы после проверки выкинуть ошибку

А так передается новый слайс и он не изменится
источник

VY

Vladislav Yarmak in Go-go!
новый слайс, в котором копия структуры
источник

AB

Andrey Burov in Go-go!
^
источник

SS

Simon S in Go-go!
так вместо этого можно пройти те же курсы от мыла
источник