LINUX.ORG.RU

Go 1.13

 


1

5

Вышел язык программирования Go 1.13, основные нововведения:

  • Язык Go теперь поддерживает более унифицированный и модернизированный набор префиксов числовых литералов, в том числе для двоичных, восьмеричных, шестнадцатеричных и мнимых литералов.
  • Совместимость с Android 10.
  • Поддержка TLS 1.3 включена по умолчанию в пакете crypto/tls.
  • Поддержка Error wrapping.
  • Unicode 11.0 теперь доступен из пакета Go Unicode.

Это последний выпуск, который будет работать на Native Client (NaCl).

>>> Подробности

★★

Проверено: Shaman007 ()
Последнее исправление: Virtuos86 (всего исправлений: 3)

Ответ на: комментарий от mxrd2

Нет, я умный. А вот у тебя явно заметны типичные для русских проявления воинствующего дилетантизма прямо указывающие на общую недалёкость.

Joe_Bishop
()
Ответ на: комментарий от mxrd2

...И эта форма не может быть такой

0b10011101

Просто потому что это нафиг не нужно, ты мелкий. Но для детей, которые говорят л вместо р и держат ложку кулаком — так лучше и удобней. Чё, после уроков за гаражами или ссыкло.

anonymous
()

Тред отлично показывает интеллектуальный уровень целевой аудитории Go.

anonymous
()
Ответ на: комментарий от Joe_Bishop

Т.е. ты нихера о язычке не знаешь, но кукарекатьвысказывать свое веское мнение влез?

покажи, придурок, где я высказывал свое мнение о языке программирования Go?

типичные для русских проявления воинствующего дилетантизма

т.е. ты язык Go видимо тоже не знаешь, и пояснить смысл этой конструкции не можешь, так?

mxrd2
()
Ответ на: комментарий от anonymous

У меня есть метод, для простоты назовем его byte extract(i, b1n, b2n, b3n).

i:  10101010 00110101 11011101 00000000
//   1        2        3               

Параметры определяют, сколько бит (старший всегда пропускается) должно быть включено из первого, второго и третьего октетов int. Последний октет i не используется.

В возвращаемом октете последовательность разрядов из третьего и второго октетов int'a меняются местами.

//   1        2        3               
// порядок групп разрядов в возвращаемом октете:
//   1        3        2 

Вызванный как byte extract(i, 3, 3, 2) возвращает:

три бита первого, два бита третьего, три бита второго

Покажи как будет выглядеть твоя «более удобная» запись unit-теста против него?

assertEq(b010_10_011, extract(0b10101010_00110101_11011101_00000000, 3, 3, 2)
//        111 33 222             111      222      33
// и далее в том же духе

Нет, это не флаги и не руны.

Предположим, метод находится в классе BitUtils, соответственно о смысле этой информации он знать не должен, так же как unit-тест против него.

Я понимаю, что тут могут быть другие варианты, но будет ли твой более «удобным»??

mxrd2
()
Ответ на: комментарий от anonymous

который и в Го-то не умеет.

Дурачок, протри глаза, я выше написал, что даже никогда не трогал его. Почему вы такие тупые-то все?

mxrd2
()
Ответ на: комментарий от mxrd2

Дурачок, протри глаза, я выше написал, что даже никогда не трогал его. Почему вы такие тупые-то все?

Ты нашёл противопоставление там где его нету, поздравляю. Ты случайно не с конкурса Интеллектуалы Среднего Урала? По интеллектуальному уровню.

kostyarin_ ★★
()
Ответ на: комментарий от kostyarin_

Какой же это ответ? Ты хоть вопрос прочитал?

Я вопрос в том сообщение тебе поставил достаточно четко.

Ты говорил, что эти литералы для неосиляторов, что ты аж «блеванул», мол это не нужно, есть другие способы.

Я тебе предложил представить свою версию.

Ты давай отвечай, не отверчивайся.

mxrd2
()
Ответ на: комментарий от mxrd2

т.е. ты язык Go видимо тоже не знаешь, и пояснить смысл этой конструкции не можешь, так?

флаг «%w» – это заворачивание ошибки в другую, её потом можно вытащить обратно, но вообще в любой адекватной серверной задаче всё что нужно – это ошибка с аннотацией, т.е. строка, чтобы эксплуатация (сисадмины/девопсы/пр) могла получить какое-то понимание о сути неполадок и предпринять какие-то действия.

Joe_Bishop
()
Ответ на: комментарий от kostyarin_

А чём ваше шестнадцатеричное удобнее здесь двоичного счисления?
Работая с всякими масками банально удобнее не ебать себе мозг и размечать сразу в двоичном виде, не делая лишние комментарии к шестнадцатеричному виду.

EvilFox ★★
()
Ответ на: комментарий от EvilFox

Ему нужно три числа с определённым сдвигом. Вот пример как делаются числа сдвигом:

a3 << 24 | a2 << 16 | a1 << 8 | a0 << 0

И всё. Причём для тестов и сдвиг и набор чисел можно сделать динамическим в цикле. И это всё. Какая-то нелепая возня с подсчётом бит – это может придти в голову только тому, кто пренебрегал изучать логические операции и операции сдвига.


Сами числа при этом проще записать в 16-ричной форме. Вот краткая справка (= специально для школьников =)

  • 0 – 0000
  • f – 1111
  • 5 – 0101
  • a – 1010

Ну и стандартный ряд, который в Го делается через iota: 1 2 4 8 сдвиг

  • 0x01 – 0000 0001
  • 0x02 – 0000 0010
  • 0x04 – 0000 0100
  • 0x08 – 0000 1000
  • 0x10 – 0001 0000

Т.е. все эти штуки даже учить не надо, настолько они простые. Но если очень не хочется – то всё равно надо учить, т.к. встречаются повсеместно.


Ну, да и не десерт. Вот читаемость

0b001_1100_0000_0000

vs

0x3 << 10

или, если того требует семантика,

0x1 <<12 | 0xc << 8

причём это же можно записать и так,

0x1c00

что достаточно просто переводится в

  • 1 - 0001
  • c - 1100
  • 0 - 0000
  • 0 - 0000

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


Я так говорю, потому что раньше тоже думал, что без 0b0101 никак и они очень полезны и всё такое. Но это в корне не верно. Как и считать, что внутреннее представление выше семантического значения. И если и использывать бинарные литералы, то в пределах четырёх бит, т.е. проще заменить их на 0x[a-f]{1}. И старик Пайк именно так всё и задумал.


Ещё больше меня парит, что люди пренебрегающие изучением логических операций (их ведь в школе не так интенсивно проходят, как арифметические, несмотря на их простоту, обычно школьники их не запоминают вообще), так вот, эти вот люди принимают решения о том, как оно там всё должно быть. Я могу понять шестнадцатиричные float-point, хотя я может просто не очень в теме действительно ли они нужны. Но вот это вот 0o644, и 0b0101 я не принимаю. Более того, прошу взять на заметку, операции сдвига, логические операции и всё такое – это маркер хорошего программиста. Их вообще, как регулярные выражения, нужно просто один раз грокнуть и всё. Это на всю жизнь.

kostyarin_ ★★
()
Ответ на: комментарий от kostyarin_

в рот бодрил каждого неосилятора, который считает это 0o644, и 0b0110 говно чем-то стоящим

не увиливай. Если не сможешь, то мне опять тебя в рот бодрить придётся, уж извини.

твой выбор быть петуханом неосилятором, недалёким

Как папки делают не думал узнать?

Потому что есть более удобные для этого способы

у папок есть другой способ делать то, что малышам кажется

Ты так громко кричал про двоичный литерал. Давай, покажи свой ответ на мой вопрос. Это простой вопрос и он задан четко. И не забудь обосновать, почему твоя версия без двоичного литерала «более удобная».

Что ты увиливаешь? Ты же вроде программиста из себя строил.

mxrd2
()
Ответ на: комментарий от kostyarin_

Ему нужно три числа с определённым сдвигом.

Нет. Кажется, ты не понял вопрос.

У меня есть функция, которая вырезает и укладывает биты, согласно параметрам. Внимательно посмотри, что она делает. Там очень просто всё. Функция написанная мной, в реальном моем коде. Очевидно, она, работает на битовых операциях (даже как-то глупо это пояснять тебе «программисту»). Писать эту функцию от тебя уже не требуется (она написана).

В своем вопросе я привел тебе ее сигнатуру, объяснил как она работает и показал тебе, как я ее тестирую.

Тебе же было предложено показать как ты запишешь в unit-тесте эквивалентный вызов assert своим способом без двоичных литералов. И далее пояснить почему этот способ «более удобный», «осилятора», «папок, а не малышек» и т.п.

Так что давай, прочитай всё же вопрос (там все совсем просто и примитивно) и покажи свой вариант.

mxrd2
()
Ответ на: комментарий от mxrd2

Ему нужно три числа с определённым сдвигом.

Нет. Кажется, ты не понял вопрос.

Внимательно посмотри, что она делает.

Посмотрел. Тебе просто нужны числа с определённым сдвигом.

kostyarin_ ★★
()
Ответ на: комментарий от kostyarin_

Тебе просто нужны числа с определённым сдвигом.

kostyarin_, то что мне нужно, у меня уже давно реализовано вышеназванной функции. Ее реализация за рамками вопроса.

Прочитай вопрос внимательно. Там же всё просто. Неужели так тяжело понять?

Напиши эквивалентный вызов assert без использования двоичного литерала, как я тебе предложил в том сообщении.

mxrd2
()
Ответ на: комментарий от mxrd2

kostyarin_, то что мне нужно, у меня уже давно реализовано вышеназванной функции. Ее реализация за рамками вопроса.

Ты отдаёшь себе отчёт как долго ты описывал что значат твои каракули? Потому что без твоих объяснений взглянув код никто бы не понял что это значит. В твоём коде нету ни грамма читаемости или семантики. Просто детсадовские приёмчики. Но ты-то этого не понимаешь, т.к. до сих пор находишься ментально на том же уровне, что и когда гонял машинки в песочнице.

kostyarin_ ★★
()
Последнее исправление: kostyarin_ (всего исправлений: 1)
Ответ на: комментарий от kostyarin_

Где ответ на вопрос? В моем сообщении тебе задан четкий конкретный вопрос. Долго будешь тупить?

Ты отдаёшь себе отчёт как долго ты описывал что значат твои каракули?

Какие еще каракули, имбецил? Ты не можешь понять как биты пакуются что ли? Алло, реализацию extract() тебе писать не предлагается, дурачок, она уже написана мной, она за рамками вопроса адресованного тебе. Там тебе я предлагаю одну строчку кода с вызовом assert() написать и продемонстрировать «ненужность» двоичных литералов. Я специально для тебя подобрал самый простой кейс из своего кода, чтобы там было не во что вникать почти. Я специально не стал приводить реализацию extract() чтоб у тебя, бедолаги, мозг не вскипел - там же, блин, аж целых три строчки битовых операций (а для тебя это прям рокет сайнс похоже)

Давай, не позорься дальше, приведи уже свой вариант как было предложено в моем сообщении.

mxrd2
()
Ответ на: комментарий от anonymous

Даннинг-Крюгер у тебя на всю жизнь.

Ты просто неосилятор. Я хз, может со времени моей молодости система образования сильно просела и вас, детишек-несмышлённышей, не в чем винить, но вы хотя бы не отворачивайтесь от священного знания. А то так и останетесь тупенькими.

kostyarin_ ★★
()
Ответ на: комментарий от kostyarin_

По итогу голосования среди петухов в Го теперь подвезли всякое говно типа 0o644, и 0b0110. Скачал бинарь и блеванул на него.

Слава богу, gcc давно поддерживает двоичные литералы, пусть и только в виде GNU расширения. Если же необходимо поддерживать все компиляторы, можно использовать конструкцию такого вида (записывай, студент, пока я рассказываю):

#include <stdio.h>

#define _0b11110000                         0xf0
#define _0b1111110111101000                 0xfde8
#define _0b11111111111111111111111111111111 0xffffffff

int main()
{
	printf("%#x\n", _0b11110000);
	printf("%#x\n", _0b1111110111101000);
	printf("%#x\n", _0b11111111111111111111111111111111);

	return 0;
}

Читабельно, опрятно, шелковисто. 🤠

0xf0
0xfde8
0xffffffff
anonymous
()
Ответ на: комментарий от anonymous

Слава богу, gcc давно поддерживает двоичные литералы

Так педофил-фашист Столман приманивает детей. Это понятно. Но в Го двоичные литералы от детей, для детей.

Читабельно, опрятно, шелковисто

Кубок Петросяна этому анону.

kostyarin_ ★★
()
Последнее исправление: kostyarin_ (всего исправлений: 1)
Ответ на: комментарий от kostyarin_

Кубок Петросяна этому анону.

Можно даже разделить на нибблы, для лучшей читабельности:

#define _0b1111_0000                               0xf0
#define _0b1111_1101_1110_1000                     0xfde8
#define _0b1111_1111_1111_1111_1111_1111_1111_1111 0xffffffff
anonymous
()
Ответ на: комментарий от kostyarin_

Так педофил-фашист Столман приманивает детей. Это понятно.

Тяжелое детство у тебя было, наверное, специалист по педофилам ты наш.

anonymous
()
Ответ на: комментарий от kostyarin_

Так педофил-фашист Столман приманивает детей. Это понятно.

Clang тоже поддерживает двоичные литералы. Столлман и там отметился?

anonymous
()
Ответ на: комментарий от anonymous

Почему детство, а не старость? Мейнстримный ответ.

anonymous
()
Ответ на: комментарий от kostyarin_

Где ответ на вопрос? Ты так громко петушился, а теперь всё? Сливаешься как позорник?

Ты смог уже понять простейший вопрос? Или совсем ума не хватает?

Go 1.13 (комментарий)

Ты не можешь понять как биты пакуются что ли? Алло, реализацию extract() тебе писать не предлагается, дурачок, она уже написана мной, она за рамками вопроса адресованного тебе. Там тебе я предлагаю одну строчку кода с вызовом assert() написать и продемонстрировать «ненужность» двоичных литералов. Я специально для тебя подобрал самый простой кейс из своего кода, чтобы там было не во что вникать почти. Я специально не стал приводить реализацию extract() чтоб у тебя, бедолаги, мозг не вскипел - там же, блин, аж целых три строчки битовых операций (а для тебя это прям рокет сайнс похоже)

Давай, не позорься дальше, приведи уже свой вариант как было предложено в моем сообщении.

mxrd2
()
Ответ на: комментарий от mxrd2

Покажи как будет выглядеть

assertEq(0x53, extract(0xAA35DD00, 3, 3, 2)

Если не можешь освоить шестнадцатеричную систему счисления то тебе нечего делать в программировании, петушок.

anonymous
()
Ответ на: комментарий от anonymous

Если не можешь освоить шестнадцатеричную систему счисления то тебе нечего делать в программировании, петушок.

@kostyarin_, залогинься.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.