Size: a a a

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

2020 October 07

x

x-foby in Golang Developers — русскоговорящее сообщество
RapidCodeLab
range ? не, не, не... тут нужен map[string]interface  типа того, и никакого range )
Что?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Süße Brezeln
Хм.. не. Основная проблема в том чтобы в тексте общем заменить найденные string, совпавшие со string из массива на другие string
У вас есть текст, и вам надо заменить в нём подстроки, содержащиеся в каком-то массиве?
источник

SB

Süße Brezeln in Golang Developers — русскоговорящее сообщество
Тоесть есть текст "Маша мыла кашу", в массиве есть каша, каша должна быть заменена на маму, в итоге текст должен стать Маша мыла маму
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
что, что? range по слайсу это всегда хуже чем поиск по map
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
RapidCodeLab
что, что? range по слайсу это всегда хуже чем поиск по map
Ох, господи)
Давайте остановимся на том, что нет, и не будем продолжать)
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Süße Brezeln
Тоесть есть текст "Маша мыла кашу", в массиве есть каша, каша должна быть заменена на маму, в итоге текст должен стать Маша мыла маму
источник

SB

Süße Brezeln in Golang Developers — русскоговорящее сообщество
Спасибо, почитаю
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
Süße Brezeln
Хм.. не. Основная проблема в том чтобы в тексте общем заменить найденные string, совпавшие со string из массива на другие string
Так это же чуть ли не в каждом книжке по Go во второй главе
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
x-foby
Ох, господи)
Давайте остановимся на том, что нет, и не будем продолжать)
for i := range items {
   if items[i] == "value"{
       
   }    
 }
 
и
 
if v, ok := map["value"]; ok {

 }


без разницы чтоль?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
RapidCodeLab
for i := range items {
   if items[i] == "value"{
       
   }    
 }
 
и
 
if v, ok := map["value"]; ok {

 }


без разницы чтоль?
Конечно же есть разница.
В одном случае вы просто итерируетесь по слайсу, а во втором — сначала итерируетесь по слайсу, формируя мапу, а потом получаете элемент мапы.

Вы правда пропустили формирование мапы из слайса и поэтому думаете, что второй вариант оптимальней, но всё же на входе у вас слайс, так что формировать мапу всё-таки придётся.

Собственно, вот.
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
x-foby
Конечно же есть разница.
В одном случае вы просто итерируетесь по слайсу, а во втором — сначала итерируетесь по слайсу, формируя мапу, а потом получаете элемент мапы.

Вы правда пропустили формирование мапы из слайса и поэтому думаете, что второй вариант оптимальней, но всё же на входе у вас слайс, так что формировать мапу всё-таки придётся.

Собственно, вот.
так я о том, что не нужно никаких слайсов на входе
источник

R

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

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
а каждый раз ренджится по миллиону значений, такое себе
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
RapidCodeLab
так я о том, что не нужно никаких слайсов на входе
Ну так вопрос-то не стоит не в том, что нужно на входе)
На входе уже есть слайс — всё.
Кроме того, не было ни слова о миллионе значений.
Ну и на последок, даже range по миллиону значений — это достаточно быстро.

В общем, вы придумываете проблему там, где её нет) Не стоит)
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
достаточно быстро для кого?) бывает что рендж недостаточно быстро )
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
может он там на "лету" при запросе делает обработку текста, тут каждая миллисекунда важна)
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Слушайте, ну бывает-то всякое, но тут же вопрос конкретный)
И тезис от вас конкретный: "range по слайсу это всегда хуже чем поиск по map"
Так вот тезис не верный по куче причин. Вот если убрать из него слово "всегда", то да, тезис имеет смысл, потому что часто, если нам надо проверять на вхождение, проще использовать мапу.
Но опять же не всегда. Существует куча вариантов, когда мапа не принесёт плюсов и даже может стать причиной деградации производительности.

Если рассматривать конкретно случай, описанный топикстартером, то тут от мапы вообще толку нет, так как нужна замена значений из слайса на какие-то другие. Нормально не прикрутишь тут мапу никак в итоге.
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
ок, сморозил херню, признаю, прошу понять)
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
RapidCodeLab
ок, сморозил херню, признаю, прошу понять)
Не, почему? Не херня это)
Иногда действительно мапа будет в тему)
Просто не в этом случае)
источник

R

RapidCodeLab in Golang Developers — русскоговорящее сообщество
я так понимаю он синонамаизинг делает , вот там синонимы обычно у меня в мапе map[target_string][]replace_string
источник