
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

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

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

Roman
06.08.2018
20:38:42

Google

Daniel
06.08.2018
20:39:22

Roman
06.08.2018
20:40:12
для слайсов ее никуда не завезли
однако я имею ввиду то, что если бы можно было указывать 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

Nikita
06.08.2018
20:52:01

Daniel
06.08.2018
20:52:52
в каком это смысле?
если ты про передачу по значению - так это не то

Nikita
06.08.2018
20:53:21

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

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

Roman
06.08.2018
20:57:49

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

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

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

Subbotin
06.08.2018
21:03:43
Но мало

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

Виктор
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

Andrew
07.08.2018
07:53:10

Marperia
07.08.2018
07:53:28

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

Artem
07.08.2018
07:55:31

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

Alexander
07.08.2018
08:04:18

Marperia
07.08.2018
08:05:29

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

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

Alexander
07.08.2018
08:09:14

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

Marperia
07.08.2018
08:11:18

Google

Daniel
07.08.2018
08:12:50

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

Pavel
07.08.2018
08:13:51

Daniel
07.08.2018
08:14:02

Alexander
07.08.2018
08:14:28

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