История изменений
Исправление
merhalak,
(текущая версия)
:
А я хочу запилить свой велосипед на базе сишки и идей из golang:
- Импорты
и
import module;
после чего кодом пользуешься, как:import ( module 1, module 2 );
module.function()
- defer'ы с поведением: переносят данный блок кода в конец перед каждым ret'ом, который после этих defer'ов. Ну и defer'ы выполняются в обратном порядке, то есть самый первый выполняется последним - для того, чтобы не дублировать код закрытия файлов, очистки памяти и т.п. Т.е. абсолютно одно и то же:
mut somech char* = malloc(size); defer free(somech); if (...) { ret EXIT_SUCCESS; } ret EXIT_FAILURE;
mut somech char* = malloc(size); if (...) { free(somech); ret EXIT_SUCCESS; } free(somech); ret EXIT_FAILURE;
- тип указывается после переменной (это уже не совсем golang):
Хотя тут, наверно, надо сделать просто var и дополнить const в стандартном для Си поведении.
let a int; - константа mut a int; - переменная
- тип fn как замена указателя на функцию, т.е. стандартный qsort (объявление) писалось бы так:
fn qsort(base void*, nitems size_t, size size_t, cmp fn(const void*, const void*) int) void;
- возврат кортежа из функции, т. е. нескольких переменных, например:
ret err, discription;
Исправление
merhalak,
:
А я хочу запилить свой велосипед на базе сишки и идей из golang:
- Импорты
и
import module;
после чего кодом пользуешься, как:import ( module 1, module 2 );
module.function()
- defer'ы с поведением: переносят данный блок кода в конец перед каждым ret'ом, который после этих defer'ов. Ну и defer'ы выполняются в обратном порядке, то есть самый первый выполняется последним - для того, чтобы не дублировать код закрытия файлов, очистки памяти и т.п. Т.е. абсолютно одно и то же:
mut somech char* = malloc(size); defer free(somech); if (...) { ret EXIT_SUCCESS; } ret EXIT_FAILURE;
mut somech char* = malloc(size); if (...) { free(somech); ret EXIT_SUCCESS; } free(somech); ret EXIT_FAILURE;
- тип указывается после переменной (это уже не совсем golang):
let a int; - константа mut a int; - переменная
- тип fn как замена указателя на функцию, т.е. стандартный qsort (объявление) писалось бы так:
fn qsort(base void*, nitems size_t, size size_t, cmp fn(const void*, const void*) int) void;
- возврат кортежа из функции, т. е. нескольких переменных, например:
ret err, discription;
Исправление
merhalak,
:
А я хочу запилить свой велосипед на базе сишки и идей из golang:
- Импорты
и
import module;
после чего кодом пользуешься, как:import ( module 1, module 2 );
module.function()
- defer'ы с поведением: переносят данный блок кода в конец перед каждым ret'ом, который после этих defer'ов. Ну и defer'ы выполняются в обратном порядке, то есть самый первый выполняется последним - для того, чтобы не дублировать код закрытия файлов, очистки памяти и т.п.
- тип указывается после переменной (это уже не совсем golang):
let a int; - константа mut a int; - переменная
- тип fn как замена указателя на функцию, т.е. стандартный qsort (объявление) писалось бы так:
fn qsort(base void*, nitems size_t, size size_t, cmp fn(const void*, const void*) int) void;
- возврат кортежа из функции, т. е. нескольких переменных, например:
ret err, discription;
Исправление
merhalak,
:
А я хочу запилить свой велосипед на базе сишки и идей из golang:
- Импорты
и
import module;
после чего кодом пользуешься, как:import ( module 1, module 2 );
module.function()
- defer'ы с поведением: переносят данный блок кода в конец перед каждым ret'ом, который после этих defer'ов. Ну и defer'ы выполняются в обратном порядке, то есть самый первый выполняется последним - для того, чтобы не дублировать код закрытия файлов, очистки памяти и т.п.
- тип указывается после переменной (это уже не совсем golang):
let a int; - константа mut a int; - переменная
- тип fn как замена указателя на функцию, т.е. стандартный qsort (объявление) писалось бы так:
fn qsort(base void*, nitems size_t, size size_t, cmp fn(const void*, const void*) int) void;
Исходная версия Deleted, :
А я хочу запилить свой велосипед на базе сишки и идей из golang:
- Импорты и
import module
после чего кодом пользуешься, как:import ( ... )
module.function()
- defer'ы с поведением: переносят данный блок кода в конец перед каждым ret'ом, который после этих defer'ов. Ну и defer'ы выполняются в обратном порядке, то есть самый первый выполняется последним - для того, чтобы не дублировать код закрытия файлов, очистки памяти и т.п.
- тип указывается после переменной (это уже не совсем golang):
let a int; - константа mut a int; - переменная
- тип fn как замена указателя на функцию, т.е. стандартный qsort (объявление) писалось бы так:
fn qsort(base void*, nitems size_t, size size_t, cmp fn(const void*, const void*) int) void;