
[Anonymous]
09.05.2016
20:40:34
перед сном

Kirill
09.05.2016
20:41:28

[Anonymous]
09.05.2016
20:42:03
ну или так

Kirill
09.05.2016
20:43:31
схоронил

Google

[Anonymous]
09.05.2016
20:43:36
+

Kirill
09.05.2016
20:43:47
о_О

[Anonymous]
09.05.2016
20:44:23
1 << 0

Kirill
09.05.2016
20:59:11
З - диЗайн
тогда уж habrahabr.ru/post/259719/
для вдохновившихся: прочитайте, на всякий случай, http://wiki.osdev.org/Getting_Started, http://wiki.osdev.org/Beginner_Mistakes и всё в этой категории http://wiki.osdev.org/Category:OS_theory
и еще в ночной подборке #смотричтоянашел: https://github.com/jjyr/bootgo

Lev
10.05.2016
04:09:11

Aleksandr
10.05.2016
04:24:41
плохие новости: сиреневый там только в первом кадре в нижней трети - остальное время только розовый и черный)

Lev
10.05.2016
04:33:28
не суть важно, главное - для перцепции этого вполне достаточно =)

Ldar
10.05.2016
05:51:11
А кто нибудь писал под Android приложения на golang, на сколько все удобно, стоит связываться?
/stat@comstatbot

Combot
10.05.2016
06:00:25
comstatbot.xyz/chat/-1001046001048

Google

Kirill
10.05.2016
06:22:20

Ldar
10.05.2016
06:27:55
Я еще никогда не писал приложения под мобильные, думаю начать и расмматриваю с какого ЯП начать. Вроде Go предпочтительней, так как на нем уже писал программы, но книжек мало, комьюнити еще не большое. У JAVA все наоборот)
Вот и хотелось поспрашивать, кто писал и на сколько там много подводных камней

Sergey
10.05.2016
06:31:08
а почему бы не использовать java или kotlin?
как бы они для этого больше предназначены

Ldar
10.05.2016
06:35:54

Lev
10.05.2016
06:37:02
нужно все писать на го!!
:)

Kirill
10.05.2016
06:47:20
Или на асме :)

Lev
10.05.2016
06:49:11
все кто пишут всё на асме, сидят в канале pro.asm ?

Kirill
10.05.2016
06:49:42

coda
10.05.2016
07:20:22
https://youtu.be/RyBEUyEtxQo

Phil
10.05.2016
09:57:47
а чем обоснована невозможность короткого объявления переменных вне функций?

Dmitri
10.05.2016
09:58:57

Sergey
10.05.2016
10:01:57
я вот читал недавно
s := ""
var s string
Why should you prefer one form to another? The first form, a short variable declaration, is the most compact, but it may be used only within a function, not for package-level variables. The second form relies on default initialization to the zero value for strings, which is ""
почему - не написано
это у Кернигана в книге по го

Dmitri
10.05.2016
10:04:48
Все правильно написано. 1-я форма - тупо сокращенная на автовыводе типа форма инициализации переменной. Допустима для функций, где "и так все понятно". Вторая форма - вне функций, т.е. на уровне ПАКЕТА, более того, ИНТЕРФЕЙСА ПАКЕТА, а вот там однозначность типизации важнее, чем сокращение и автовывод.

Sergey
10.05.2016
10:05:53
ну что там написано я прочитал, но оно не обосновано, я не увидел там фразы
"Это сделано для того, чтобы ......" или "это сделано потому, что...."

Dmitri
10.05.2016
10:06:24
собственно, как и большинство "спорных" решений в Go это сделано "для того, чтобы никто так не делал"

Google

Phil
10.05.2016
10:06:44


Dmitri
10.05.2016
10:09:48
это предположение или где-то описано? а в чкм может быть неоднозначность и чем функции хуже пакетов?
The first form, a short variable declaration, is the most compact, but it may be used only within a function, not for package-level variables. The second form relies on default initialization to the zero value for strings, which is ""
Дословно: первая форма - сокращенное объявление переменной (собственно, примечание переводчика, это таки и инициализация в одном флаконе), самый компактный вариант, но может быть использован только в пределах функции, не для переменных уровня пакета. Вторая форма полагается на инициализацию по умолчанию в виде нулевого значения для строк, которое "".
В плюс - компилятор Go сильно прост. Интерфейсная часть - она и в Африке интерфейсная. Он тупо берет все, что под var и с большой буквы - и делает это видимым извне. Компилятору вообще никуда не упиралось автовыводить типы интерфейсной части.
Поэтому, чтобы не заморачиваться, вообще все переменные уровня пакета запретили в сокращенной форме писать.
Он в цитате не зря противопоставляет "компактный вариант" и "package-level variables"
Собственно, в C# тоже var только внутри функций работает. Я вообще языков с явной типизацией и автовыводом интерфейсов не видел.


Phil
10.05.2016
10:21:44
понял. во, это хорошее объяснение


Dmitri
10.05.2016
10:26:17
даже можно конкретней. Как работает i :=
Оно берет выражение, которое справа, смотрит, что оно возвращает и переменную слева инициализирует нужным типом. Внутри функции оно работает, это операция.
Т.е. i := "" - смотрит на "" как на выражение, возвращающее строку. Соответственно, создает переменную i типа string и кладет туда "".
В случае с переменной уровня пакета/модуля, тип этой переменной должен быть известен ДО выполнения каких-либо операций, т.к. сначала создается пакет, а потом уже внутри что-то делается.
т.е. var i string = ""
1. На этапе инициализации пакета создается переменная i типа string.
2. По факту инициализации в нее кладется ""
Теперь i := ""
Тип i на момент инициализации неизвестен. "" пытается лечь в переменную неизветного типа, и все рушится, мироздание погибает.
В момент инициализации, конечно, можно предположить, что i - interface{}, но это плохо, т.к. в момент присвоения ему "" придется приводить interface{} к string и потом туда уже класть "", что накладно. При этом i останется interface{}.
Либо перепиливать и усложнять конпелятор. А на такое усложнение, как автовывод интерфейсной части, еще ни одна контора не решилась.


Sergey
10.05.2016
10:27:50
а вот это логично, да)

Daniel
10.05.2016
10:31:36
если не вспоминать, что var i = “” - работает тоже.

Phil
10.05.2016
10:31:58
опс

Sergey
10.05.2016
10:32:25
всё сломал)

Dmitri
10.05.2016
10:32:33
сцук, ненавижу)))
ушел проверять)
Работает, мля. Ну, значит, 1 вариант остается. При первом проходе компилятора объявлением переменных считаются только строки, начинающиеся с var. И усложнять лениво и нафиг никому не нужно.
а автовыводить оно умеет, но потом)

mitya
10.05.2016
11:11:00

Phil
10.05.2016
11:12:44
Ахтунг. нацисты в каментах! )

Sergey
10.05.2016
11:13:24

Google

Плюшка
10.05.2016
11:14:34

mitya
10.05.2016
11:23:28

Daniel
10.05.2016
11:24:00
Работает, мля. Ну, значит, 1 вариант остается. При первом проходе компилятора объявлением переменных считаются только строки, начинающиеся с var. И усложнять лениво и нафиг никому не нужно.
вот что очень ярко проявляется у go-программистов - так это стокгольмский синдром. нет, этому нет оправдания. то, что у обявления переменных внутри функции и снаружи разный синтаксис - это просто полный привет.
впрочем, у := функциональность несколько иная, чем у var =
слева от := могут стоять вперемешку новые и уже объявленные переменные. тогда уже объявленные переиспользуются, а новые объявляются
следите за собой, короче, коллеги, не поддавайтесь на провокации

Aleserche
10.05.2016
11:24:36

Admin
ERROR: S client not available

Sergey
10.05.2016
11:24:49

Phil
10.05.2016
11:26:18

Daniel
10.05.2016
11:26:35
нет, там слева должно быть новое

Phil
10.05.2016
11:26:58
Это много еобъясняет

Daniel
10.05.2016
11:35:17
но вот какой прекрасный эффект из этого следует
если ты используешь переменные вперемешку в том же блоке - все работает как ожидается

Phil
10.05.2016
11:35:47
угу. странно что это нигде не написано. faq что ли сделать

Daniel
10.05.2016
11:36:24
а если ты во вложенном блоке попытался ту же смесь организовать - неееет, во вложенном блоке все переменные будут переобъявлены.
и соответсвено, наружу выпадет совсем не то, что ты ждешь
уродцы, короче
нет им оправдания

Phil
10.05.2016
11:37:02
Так. Надо сформулировать про пакеты и переобъявления в одном посте и поставить тэг faq или tips. Кто тут бездельничает - сделаейте по-русски

Daniel
10.05.2016
11:37:24
это все есть в faq, на самом деле
просто faq этот не очень f

Google

Phil
10.05.2016
11:37:39
:)
плохой, негодынй язык. но многое на нём получается быстрее, чем нак остальных реализовать. но плохой, негодный язык.
на самом деле тяжело с питоном совмещать - у них немного разные умолчания перетеканий и голова пухнет

Daniel
10.05.2016
11:39:33
https://play.golang.org/p/nFbbTO1dtL
так понятно ли?
вот так даже нагляднее
https://play.golang.org/p/eTBKe_8OVF
вот так даже, с комментами
https://play.golang.org/p/uvLHePEkZm

Sergey
10.05.2016
11:44:09

Phil
10.05.2016
11:44:18
а, ну с блоками кстати воведение очевидное

Daniel
10.05.2016
11:44:43
с блоками - да, а со всеми другими вариантами нет
и оно, блин, разное. разное!
уроды

Andrew
10.05.2016
11:56:53

Alexander
10.05.2016
12:21:23
вот так даже, с комментами
https://play.golang.org/p/uvLHePEkZm
В A Tour of Go https://tour.golang.org/basics/10 написано, что это просто Short variable declarations. Возможно, не у этого способа есть какие-то скрытые преимущества, кроме однострочного множественного присвоения? Такое же var l, c int, string = e2() не катит.

Daniel
10.05.2016
12:22:25
в туре - наврано слегка