@proGO

Страница 1617 из 1674
Dorian
06.08.2018
20:25:00
append переводиться как "добавлять"

Почему там должно быть copy?

Daniel
06.08.2018
20:25:19
Nikita
06.08.2018
20:25:29
)))

Google
Daniel
06.08.2018
20:25:31
но чаще всего - нет.

почему ты думаешь, что это плохо?

Nikita
06.08.2018
20:25:48
я выше пример привел

https://play.golang.org/p/cerCxKATRGZ

Фекла [wickebine]
06.08.2018
20:26:37
в том, почему при append не происходит copy
хм, я правильно тебя понимаю, что на каждый апенд ты предлагаешь создавать новый массив и копировать в него данные из старого? могу предложить делать это вручную, никто не отменял мейк, копи, аппенд

не понимаю почему ты не примешь тот факт, что слайс - это всего лишь удобная конструкция для работы с массивом

Daniel
06.08.2018
20:27:08
https://play.golang.org/p/cerCxKATRGZ
я изучил, поведение ожидаемое и описанное в доке. что в нем плохого?

Nikita
06.08.2018
20:27:30
такие фичи могут создавать баги

Daniel
06.08.2018
20:28:02
в этом смысле в go все довольно плохо - иммутабельности нет ни для чего, кроме строк.

так что это не единственное место, на котором можно создать баги.

но в любом языке, где есть слайс - он ведет себя так же, так что мы вроде как готовы

Roman
06.08.2018
20:38:42
такие фичи могут создавать баги
добро пожаловать в Go, у нас immutability не завезли, ждёмс)

Google
Daniel
06.08.2018
20:39:22
Roman
06.08.2018
20:40:12
для слайсов ее никуда не завезли
ну... да.. "slice" != "dynamic array" // true "slice" == "a slice of a (dynamic) array" // true

для слайсов ее никуда не завезли
однако я имею ввиду то, что если бы можно было указывать const qualifier то баги можно бы было избегать: func ReadOnly(data const []string) { data[0] = "hi" // <- COMPILE-TIME ERROR! } func main() { mySlice := []string{"first", "second"} ReadOnly(mySlice) // guaranteed to not be mutated }

для слайсов ее никуда не завезли
или например вот так: type Data struct { data const []string } func NewDate() *Data { // Once created - Data.data remains immutable forever return &Data { data: []string{"я", "есть", "грут"}, } } func (d *Data) DoSomethingNasty() { d.data[1] = "не есть" // <- COMPILE-TIME ERROR! }

Daniel
06.08.2018
20:47:54
коллега, эта тема уже немножко замусоленная

Roman
06.08.2018
20:48:44
коллега, эта тема уже немножко замусоленная
да я знаю, у меня просто пукан рвёт.. не понимаю как можно было такую эссенциальную и относительно простую фичу профукать

Daniel
06.08.2018
20:52:52
в каком это смысле?

если ты про передачу по значению - так это не то

Roman
06.08.2018
20:53:40
Переходите в Раст
а туда горутины не завезли...

Nikita
06.08.2018
20:53:47
:)))

Daniel
06.08.2018
20:53:52
Переходите в Раст
как только не нем появится хоть сколько-нибудь серьезный проект - так сразу.

Roman
06.08.2018
20:54:36
раст конечно хорош, но.... у меня такое впечатление что сервер, который я на Go напишу за день - на Rust буду писать неделю

Karachun
06.08.2018
20:54:58
а на пхп за час

а на js сделоешь npm install ...

Roman
06.08.2018
20:55:33
а на пхп за час
а на JavaScript вообще писать не надо... npm i ...

Karachun
06.08.2018
20:55:38
)

Roman
06.08.2018
20:56:57
Rust - it works, it's rock solid, it's fast and I'm 50 now Go - it's fast, I've benchmarked it PHP - it seems to work JavaScript - it works?!

Daniel
06.08.2018
20:57:29
коллеги, только давайте без языкосрача

Google
Daniel
06.08.2018
20:58:03
могу помочь :)

Dorian
06.08.2018
20:58:17
Зашел такой про Go почитать, а тут шутки про жээс и ржавого :\

Roman
06.08.2018
20:59:16
вот когда immutability завезут, вот тогда будет почти идеален!

Roman
06.08.2018
21:05:03
Да есть проекты.
думаю это вопрос времени, он ещё не успел этаблироваться, однако мне кажется он много где C/C++ заменять начнёт постепенно с Go его сравнивать - нонсенс, разные задачи решают, разные уровни абстракции

Subbotin
06.08.2018
21:05:45
Ага

Впрочем уровни абстракции схожие. Но го сильно проще.

Roman
06.08.2018
21:32:46


типичный пример "defect by design"

const packages const methods const variables const fields ...

Daniel
06.08.2018
21:40:37
последнее предупреждение

Nikita
06.08.2018
21:43:08
последнее предупреждение
а что он нарушает?

Daniel
06.08.2018
21:48:10
а что он нарушает?
то же, что и обычно - мусолит тему про иммутабельность :)

нам всем ее не хватает, но это не повод устраивать флейм

Roman
06.08.2018
21:57:42
Dmitry
07.08.2018
07:06:15
https://medium.com/containerum/why-we-use-go-to-develop-containerum-platform-for-kubernetes-3a33d5bdc5ec

Dorian
07.08.2018
07:23:00


Харош!

Google
Marperia
07.08.2018
07:42:05
А может тут кто-нибудь в двух словах объяснить, что такое дженерики и зачем они нужны? Пришёл в го из питона, джаву/си не пробовал.

Denis
07.08.2018
07:48:56
А может тут кто-нибудь в двух словах объяснить, что такое дженерики и зачем они нужны? Пришёл в го из питона, джаву/си не пробовал.
Примерно то, как ты обозначаешь типы в map, slice, и то почему в пакете atomic есть функции на каждый из целочисленных типов

Виктор
07.08.2018
07:49:56
Pavel
07.08.2018
07:51:51
Приветствую! может кто подскажет: у меня есть модуль b, в нем есть конструктор и он возвращает локальную структуру типа c. a := b.constr() - тоесть а теперь типа *b.c теперь мне нужно в мейне создать функицю которая на вход получит *b.c как мне это сделать? b.c же локальная, и он ее не дает так кидать...

cannot refer to unexported name

Pavel
07.08.2018
07:54:05
я не хотел что б она была экспортируемой, чтоб ее можно было достать только через конструктор....

просто бред получается, через контруктор достать я ее могу где угодно, а использовать в качестве аргумента/типа в структуре не могу...

Artem
07.08.2018
07:55:31
я не хотел что б она была экспортируемой, чтоб ее можно было достать только через конструктор....
1) сделай интерфейс публичный с методами и возвращай его 2) сделай экспортируемой, но поля приватными

Pavel
07.08.2018
08:03:51
гммм.... тогда во всех методах этой структуры надо делать какую-то проверку что какое-то поле не пустое.... чтоб если кто-то получил экземпляр не через мой конструктор - тогда краш типа

Alexander
07.08.2018
08:04:18
А может тут кто-нибудь в двух словах объяснить, что такое дженерики и зачем они нужны? Пришёл в го из питона, джаву/си не пробовал.
https://www.google.com/search?client=ubuntu&channel=fs&q=%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9+%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC&ie=utf-8&oe=utf-8

Alexander
07.08.2018
08:07:47
Потрясающе точное объяснение двумя словами!
любые другие объяснения ещё сложнее

особенно для человека, у которого Go - первый язык с типами

Marperia
07.08.2018
08:08:50
А чем interface{} не устраивает?

Alexander
07.08.2018
08:09:14
А чем interface{} не устраивает?
Если кратко, то всем

Artem
07.08.2018
08:09:28
а если уж совсем страшно, то добавь интерфейсу приватный пустой метод, тогда и его не смогут использовать

Google
Daniel
07.08.2018
08:12:50
я сам не очень в курсе, но кажется обобщенное программирование - это и есть дженерики
дженерики - это параметрические типы. в самом простом виде это кодогенерация, когда тип описывается темплейтом и в этот темплейт потставляются конкретные имена типов при компиляции

Nikita
07.08.2018
08:13:44
хотя с другой стороны что ещё в го обсуждать

Daniel
07.08.2018
08:14:02
А чем interface{} не устраивает?
контролем типов в рантайме. контроль типов во время компиляции позволяет ловить массу ошибок даже без тестирования

Daniel
07.08.2018
08:14:43
а мне на него наплевать :)

Pavel
07.08.2018
08:15:12
контролем типов в рантайме. контроль типов во время компиляции позволяет ловить массу ошибок даже без тестирования
угу, если б не := эту проблему наверно сильно раньше обнаружили... тоесть вернуть переменную приватного типа можно, а засунуть ее в структуру или в функцию - нельзя....

Daniel
07.08.2018
08:15:38
и я этим пользуюсь время от времени.

Pavel
07.08.2018
08:17:22
точнее так - присвоить переменную локального типа можно, а объявить переменную локального типа нельзя.... бред....

Daniel
07.08.2018
08:17:35
почему - бред?

Artem
07.08.2018
08:17:42
ну это не best practice вообще так делать

Daniel
07.08.2018
08:17:54
есть пара мест, где это полезно

Artem
07.08.2018
08:18:00
и все говорят, что приватные стурктуры не нужно возвращать

Daniel
07.08.2018
08:18:14
и линтеры ругаются, да

но это единственный годный способ эмулировать enum

Страница 1617 из 1674