
Vasiliy
13.10.2018
14:26:44
=)

Nikolay
13.10.2018
14:26:50

Danil
13.10.2018
14:27:16
а на русские нужно 2 байта

Google

Vasiliy
13.10.2018
14:27:40
BenchmarkPlus-8 2000000000 0.29 ns/op 0 B/op 0 allocs/op
BenchmarkBuffer-8 20000000 73.6 ns/op 112 B/op 1 allocs/op
BenchmarkStringBuilder-8 20000000 58.3 ns/op 24 B/op 2 allocs/op
https://gist.github.com/pixelbender/de80b5daf29d55721715e52b32d7c184

Pawel
13.10.2018
14:28:11

Nikolay
13.10.2018
14:28:50

Vasiliy
13.10.2018
14:29:01
а вопрос видел?

Nikolay
13.10.2018
14:30:00
а вопрос видел?
ну, человек бы не задавал вопрос, если бы у него просто работал плюс, наверное, нет?
давай его и спросим

Pawel
13.10.2018
14:30:39

Vasiliy
13.10.2018
14:30:43
ну тем не менее мой ответ точнее, без домыслов )

Nikolay
13.10.2018
14:31:11
а еще глобальная переменная + sync.Once - прям стандартный способ реюзания чего угодно

Pawel
13.10.2018
14:33:08

Daniel
13.10.2018
14:33:15
а?!

Google

Daniel
13.10.2018
14:33:30
они по определению глобальные объекты

Nikolay
13.10.2018
14:33:53

Pawel
13.10.2018
14:36:51
в смысле - без открытых. стейт синглтона в закрытом глоб объекте,да

Nikolay
13.10.2018
14:37:54
если тебе нужно синглтон извне юзать - то какой смысл его во что-то оборачивать?

Daniel
13.10.2018
14:38:21
приватная переменная в пекедже и публичные методы для работы с ней
ну - от модификации защитить
или там проверить параметры перед модификацией

Nick
13.10.2018
14:38:57

Nikolay
13.10.2018
14:38:58

Daniel
13.10.2018
14:39:00
или mutex

Nikolay
13.10.2018
14:39:39
или mutex
ну, я бы все равно сделал структуру, обернул бы ее методы в мьютексы, а потом инстанс этой структуры сделал бы глобальным объектом
по сути, придя к той же самой ситуации
не?

Vasiliy
13.10.2018
14:41:42
но ты не сможешь его сделать константой - а значит его можно заменить

Nikolay
13.10.2018
14:42:27
в 2.х, может, завезут

Vasiliy
13.10.2018
14:43:47
см binary.BigEndian

Nikolay
13.10.2018
14:45:53

Google

Nikolay
13.10.2018
14:45:56
в чем пойнт?

Vasiliy
13.10.2018
14:47:17
> нет общедоступных иммутабельных объектов

Nikolay
13.10.2018
14:47:29

Vasiliy
13.10.2018
14:47:46
вот выше - есть же

Nikolay
13.10.2018
14:47:50
нет же
это просто структура, у которой нет внутреннего стейта
по сути, неймспейс

Vasiliy
13.10.2018
14:48:34
и это не отрицает его иммутабельности

Nikolay
13.10.2018
14:48:56
отрицает, потому что это не контейнер и не автомат
он не может быть мутабельным или немутабельным

Vasiliy
13.10.2018
14:49:31
?

Nikolay
13.10.2018
14:49:34
это все равно, что сказать, что число 1 в го - иммутабельный объект языка

Нави
13.10.2018
14:52:07
идея такова, переменные в Го все становятся иммутабельными, и ничего делать не надо. единственное правило, использовать только ":=", и не использовать "=" .

Nikolay
13.10.2018
14:52:49

Pawel
13.10.2018
14:54:20

Vasiliy
13.10.2018
14:55:22
потому что иногда проще и быстрее написать одну строчку вместо трех-пяти

Nikolay
13.10.2018
14:55:49
а смысл именно в том, чтобы никто не могло его подменить
по сути, во многих языках синглтон реализуется классом, который каждый раз при инстанциировании возвращает ссылку на один и тот же экземпляр

Vasiliy
13.10.2018
14:58:01
что малось эгоистично на самом деле )

Google

Nikolay
13.10.2018
14:58:49
ну, по сути, точка доступа для получения экземпляра будет одинаковая везде в коде ?
и это удобно

Pawel
13.10.2018
15:02:26

Nikolay
13.10.2018
15:03:06
что тебе мешает для инициализации синглтона извне передать параметры?

Нави
13.10.2018
15:04:44
это не сделает структуры иммутабельными
почему, если придерживаться правила использовать только ":=" , то и структуру компилятор не даст изменить:
type Circle struct {
x, y, r float64
}
c := Circle{x: 0, y: 0, r: 5}
c := Circle{x: 1, y: 2, r: 6} //- непройдёт второй раз

Nikolay
13.10.2018
15:05:12
внутренний стейт ничто не помешает изменить

Pawel
13.10.2018
15:06:15

Nikolay
13.10.2018
15:07:49
а зачем - потому что так реально проще, чем прокидывать кучу непойми чего во все функции вместо того, чтобы просто импортнуть поле из модуля

Pawel
13.10.2018
15:15:13
ну тогда должна быть функция GetOldShit(), по которой другие получаю то, что было создано с помощью NewShit. И тут возникают вопрос 1) как понять был ли shit инициализирован и 2) что делать если не был. Все ответы, которые я слвышал и которые ты мне наверняка дашь, мне не нравится, поэтому я глоб. переменные не юзаю сам и выпиливаю у других в code review

Nikolay
13.10.2018
15:16:37

Pawel
13.10.2018
15:17:51

Nikolay
13.10.2018
15:18:27

Pavel
13.10.2018
15:22:11
Причина не делать так — дешевая разработка.
А дорогая часто не нужна.
Потому что не имеет смысла.

Nikolay
13.10.2018
15:23:16

Google

Pavel
13.10.2018
15:23:24
Говнокод збс
Особенно если написал и забыл
У него есть ситуации когда он — лучший твой друг
Перфекционизм — вот это ебаный пиздец, господа ?

Nikolay
13.10.2018
15:26:12
Ну тогда ты не разработчик, ты макака

Pavel
13.10.2018
15:26:29
Высококвалифицированная макака

Nikolay
13.10.2018
15:26:46
А не Даннинг-Крюгер
Второе гораздо чаще

Pavel
13.10.2018
15:28:25
Лучше завышенная самооценка, чем заниженная

Мерлин
13.10.2018
15:29:48
Я предлагаю завершить эту невероятно продуктивную дискуссию

Pawel
13.10.2018
15:35:27
кстати
хотелось бы пример полезного с практической т.з. глобального объекта, для которого не имеет значения порядок инициализации. мне вот так сразу в голову не приходит

Pavel
13.10.2018
15:35:56
Логгер

Pawel
13.10.2018
16:03:42
только если он stdout. А что-то менее тривиальное есть?


Marlik
13.10.2018
16:04:24
Потому что it это не про it. it это про решение бизнесзадач лишь бы работало, посредством дешевой раб. силы, которая приходит в it за зарплатой, и чтобы не на завод.
А потом на всяких фронтенд конфах ебут друг друга в жопу, кто круче фреймворк освойл. ФРЕЙМВОРК, КАРЛ!
В it ценится умение решать инфраструктурные задачи. Если ты умеешь webpack'ом файлики конкатенировать или запускать всесь свой говнокод со всеви зависимостями из говна в изолированном окружении (да-да, я на тебя смотрю, мамкин девопс инженер), то это типа збс.
Вот по этому мы и живём с монолитными говнобраузерами на оверлям строк кода, с сайтиками которые ждут по 250мб и 25% цпу. По этому, у нас есть говно-конференции, где невъебенные докладчики читают о том, как блеать повысить эффективность работы сайтика. Эффективность, блеать! Сайтика, блеать!!!!
Вот потому, что для разработки, тонкого клиента + ui к базе юзерского контента у нас спрашивают по СТЕК ДЛЯ ФРОНТЕНДА, БЛЕАТЬ!
И на бекенде то же дерьмо творится. Привет жаве с её жвмом и шарпу. Для примитивнейшей логики заводят целые проекты на спринге.
Ахах)) Оценил, спасибо.


Nikolay
13.10.2018
16:09:04

Alexander
13.10.2018
16:12:08

Pavel
13.10.2018
16:13:00

anatolii
13.10.2018
16:14:16
Для человека.
Спорно, при заниженой пытаешься возобновить недостаток, при завышеной ты уже все знаешь и тебе ниче не надо

Pavel
13.10.2018
16:15:18

Daniel
13.10.2018
16:15:35
коллеги