LINUX.ORG.RU

История изменений

Исправление 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; - переменная
    
    Хотя тут, наверно, надо сделать просто var и дополнить const в стандартном для Си поведении.
  • тип 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;