
Мерлин
13.05.2016
12:12:52

Lev
13.05.2016
12:12:53

Dmitri
13.05.2016
12:12:58
Для достижения просветления

Maxim
13.05.2016
12:13:24
Метод тыка разве запретили законодательно?

Google

Lev
13.05.2016
12:14:03

Мерлин
13.05.2016
12:14:20

Dmitri
13.05.2016
12:15:13

Мерлин
13.05.2016
12:15:35

Maxim
13.05.2016
12:15:56

Dmitri
13.05.2016
12:16:36
Да, внутри может оказаться 1 и тот же массив. Но адреса самих слайсов будут различны
Смысл ссылочных типов в том, что они передаются по указателю, а не копируются. Но разделение на ссылочный/не ссылочный типы имеет смысл в языках без указателей. В go указатели есть.
Поэтому и сам спор немного более философский, чем практический

Daniel
13.05.2016
12:20:24

Phil
13.05.2016
12:23:03

[Anonymous]
13.05.2016
12:23:44
Почему в парсере не убрали обязательную запятую в конце?)
fmt.Println(
pow(3, 2, 10),
pow(3, 3, 20),
)

Dmitri
13.05.2016
12:24:41
Собственно в java:
void function(string a, int b) {}
При передаче параметров функции string a передастся по ссылке, int a по значению. Просто потому что оно так заведено. Поэтому string'и - ссылочные типы. int'ы - не ссылочные. А я речь веду про то, что в Go это деление не нужно, т.к. указатель объявляется явно. Поэтому в книге и не описано деление на ссылочные/не ссылочные типы.

Phil
13.05.2016
12:27:01

Google

Daniel
13.05.2016
12:27:30
там много няшного, имеет смысл прочесть и выучить
%T, к примеру

Alexander
13.05.2016
12:28:20
%T в туториале пропагандируется тоже.

Phil
13.05.2016
12:28:22
Согласен да. %v :)

Daniel
13.05.2016
12:28:50
%#+v

Phil
13.05.2016
12:28:55

Daniel
13.05.2016
12:29:04
а
ну - да

Dmitri
13.05.2016
12:34:08

Daniel
13.05.2016
12:34:57

Dmitri
13.05.2016
12:35:16
В случае именно ссылочного типа слайсы s1 и s2 должны совпадать, т.к. это на выходе один и тот же слайс.
Если выдача разная, значит таки окромя указателя на массив есть еще некоторая структура, которая хранит идексы. Т.е. есть подлежащий массив [0..n] и несколько слайсов: s1[0 - 11] и s2[0 - 13]

Daniel
13.05.2016
12:37:45
хватит, а?

Dmitri
13.05.2016
12:37:49
На выходе, получается, что да, без вопросов, МАССИВ (как указатель на начало массива) - один, СЛАЙСЫ как структура, имеющая индексы и capacity - разные?
Не, ты не подумай, я ДЕЙСТВИТЕЛЬНО разобраться хочу.

Alexander
13.05.2016
12:38:24
Это просто релокация https://play.golang.org/p/TV2bX-5y3X

Daniel
13.05.2016
12:38:26
да, слайсы разные, да, массив один
именно то, что массив один, и говорит нам, что слайс - ссылочный тип

[Anonymous]
13.05.2016
12:38:49

Daniel
13.05.2016
12:39:29

Google

Dmitri
13.05.2016
12:40:23
Вот! И я о том же! Слайс нельзя считать ссылочным типом. s2 := s1, получается, КОПИРУЕТ структуру, в которой есть, да, без базара, ссылка (указатель) на массив, который неизменен, т.к. он указатель, и индексы, которые в исходном и конечном слайсе различны.
Т.е. тут я прав? Скажите "Да", и я, успокоившись, пойду фильм смотреть)

Daniel
13.05.2016
12:41:08
кого интересует эта структура, а? данные твои лежат в массиве и передаются по ссылке. все. хватит, правда

Phil
13.05.2016
12:41:13
Вот! И я о том же! Слайс нельзя считать ссылочным типом. s2 := s1, получается, КОПИРУЕТ структуру, в которой есть, да, без базара, ссылка (указатель) на массив, который неизменен, т.к. он указатель, и индексы, которые в исходном и конечном слайсе различны.
Да не копирует он ничего? Куда он копирует, если в твоём примере ты сам видишь идентичные указатели/

Daniel
13.05.2016
12:41:30
копирует, конечно

Sergey
13.05.2016
12:41:34

Dmitri
13.05.2016
12:41:43
В примере я вижу указатель на массив данных, не на слайс, подозреваю

Daniel
13.05.2016
12:41:55
ту самую структуру на три один int64 и два int

[Anonymous]
13.05.2016
12:43:32

Dmitri
13.05.2016
12:43:49
копирует, конечно
Вот! Спасибо! Были бы тут плюсы, поставил бы! Итого, слайс, упрощая, это структура из указателя на массив и 2 индексов. И эта структура копируется. При этом, получается, сам массив данных - общий.

Daniel
13.05.2016
12:44:01

Dmitri
13.05.2016
12:44:33
Спс, слайс не тождественнен ссылке, я спокоен, отчаливаю)

Dmitri
13.05.2016
12:44:39
Всем спс.

[Anonymous]
13.05.2016
12:45:19

Daniel
13.05.2016
12:45:36
я поправил

Phil
13.05.2016
12:45:46

Daniel
13.05.2016
12:46:26
именно
но не совсем (урроды!)

[Anonymous]
13.05.2016
12:47:00

Daniel
13.05.2016
12:47:18
если ты внутри функции будешь делать слайсу аппенд - надо передать ссылку на слайс, иначе все, что произойдет - произойдет с копией слайса

Google

Daniel
13.05.2016
12:47:21
ненавижу

Phil
13.05.2016
12:48:21

[Anonymous]
13.05.2016
12:49:32
немного возникает когнитивный диссонанс
fmt.Println(1, 2)
и
fmt.Println(one(), two(),)
Хотя можно и fmt.Println(1, 2,) но gofmt убирает ,
Хотя кроме этого пока подвоха не вижу, Go вообще как серебряная пуля выглядит

Daniel
13.05.2016
12:52:39
ну вот граница применимости довольно близко
но - да, как-то так получилось, что все, что я пишу последние полтора года - я пишу на go

Плюшка
13.05.2016
12:54:09
сск детектед

Admin
ERROR: S client not available

[Anonymous]
13.05.2016
13:24:21
Уж простите за глупые вопросы, но еще поспрашиваю
https://tour.golang.org/flowcontrol/7
(Both calls to pow are executed and return before the call to fmt.Println in main begins.)
т.е. функции выполняются заранее, еще перед тем как в main() идет их вызов?
В тех же плюсах, на сколько помню, функции выполняются только после их вызова, верно?

Daniel
13.05.2016
13:27:36
нет
там написано, что обе pow выполнятся до того, как Println будет вызвана

[Anonymous]
13.05.2016
14:01:30
Хотя
То есть, заходим в блок fmt.Println , выполняем все что внутри, и уже запускаем fmt.Println чтобы вывести эти значения

Daniel
13.05.2016
14:11:44
да
но это во всех языках так, кроме тех, где ленивые вычисления есть

Alexander
13.05.2016
15:08:27
А бывает рекурсия функции определенной внутри функции? https://play.golang.org/p/3FUBTNiMy7 Или это перебор?
Рабочий вариант https://play.golang.org/p/I4eooyyknX Но функция в корне модуля

Google

Alexander
13.05.2016
15:11:33
https://play.golang.org/p/IvnPVkrfga

[Anonymous]
13.05.2016
15:16:50
рекурсивные алгоритмы работают медленнее линейных аналогов

分解物質
13.05.2016
16:04:52

Alexander
13.05.2016
16:05:43

分解物質
13.05.2016
16:06:02

Alexander
13.05.2016
16:06:38
В данном случае это туториал. Рекурсия - это красиво. Можно?

分解物質
13.05.2016
16:06:53
Что можно?

Alexander
13.05.2016
16:07:02
Использовать

分解物質
13.05.2016
16:07:08
ну да

Alexander
13.05.2016
16:07:34

分解物質
13.05.2016
16:09:25
Где делаешь?

Alexander
13.05.2016
16:09:37
https://play.golang.org/p/3FUBTNiMy7

分解物質
13.05.2016
16:11:50
значит go так не умеет

Alexander
13.05.2016
16:13:03

分解物質
13.05.2016
16:21:03
да

Alexander
13.05.2016
16:21:38
Оказывается https://play.golang.org/p/8FF0d4pIM-
Ща проверю, но если не декларировать переменную, то ее невидно.
Вполне очевидно https://gist.github.com/oshliaer/45ec7ae142170c81bc4d4adc8438637a#file-scopes-of-var-md Необходимо создать переменную, до того, как ее использовать.