Задать вопрос
Ответы пользователя по тегу Go
  • Какую IDE выбрать для Go?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Вот здесь видно, что Andrew Gerrand и Brad Fitzpatrick, ведущие разработчики языка работают в Vim. Rob Pike и Russ Cox предпочитают Plan9port acme, здесь. Мне acme нравится.
    Ответ написан
    Комментировать
  • Для чего используется golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Go используется для разработки серверов и сервисов и в этом с ним равен только интерпретируемый Erlang.
    Ответ написан
    Комментировать
  • Как настроить кросскомпиляцю golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Я на darwin собираю master branch из исходников (git checkout master) а не relis go1.4.2. В master уже пару месяцев для кросскомпиляции вообще никаких дополнительных движений не нужно. Просто %GOOS=linux go install mypackage
    Ответ написан
    Комментировать
  • Существует ли MOOC по GO?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    1 комментарий
  • Как работать с указателями на массивы (слайсы) в GO (golang)?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    origArray := []string{"1", "2"}  //уже дает вам слайс, а не массив
    origSlice := origArray[:]   //в этой строке нет никакого смысла
    //массив можно получить так 
    var myArray [2]string = [2]string{"1", "2"}

    Слайс в Go - ссылочный тип. Объект этого типа содержит три атрибута len длину Int, cap поместительность Int и указатель на первый элемент Pointer.
    Все аргументы в Go передаются копированием значения, то есть передавая функции слайс вы передаете копию слайса. Эта копия будет содержать собственные len и cap, но однако указатель на тот же первый элемент что и аргумент. Таким образом, чтобы модифицировать элементы слайса достаточно передать его функции, чтобы защитить слайс от модификации функцией нужно передавать его копию сделанную встроенной функцией copy(dst, src) Чтобы дать функции доступ к длине len и вместительности cap слайса следует передавать указатель на него. append очевидно требует изменения не только элементов но и длины и вместительности слайса поэтому передавать нужно указатель на слайс.
    foo(&origSlice){
    *origSlice = append(* origSlice, "3")
    ...

    Однако осторожней
    foo (origSlice){
    origSlice[1]="baz"
    ...
    }

    изменит оригинальный origSlice, хотя и не может изменить его длину
    Ответ написан
    1 комментарий
  • Как отослать данные определённому сокету?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Данные отправляются всем в цикле
    for cs, _ := range ActiveClients {
                    Message.Send(cs.websocket, 'Testtt')
                    if err = Message.Send(cs.websocket, clientMessage); err != nil {
                        log.Println("Could not send message to ", cs.clientIP, err.Error())
                    }
    }

    отправить данные на определённый clientIP (пусть 127.0.0.1) например так
    for cs, _ := range ActiveClients {
             if cs.clientIP ==  "127.0.0.1"{
                    Message.Send(cs.websocket, 'Testtt')
                    if err = Message.Send(cs.websocket, clientMessage); err != nil {
                        log.Println("Could not send message to ", cs.clientIP, err.Error())
                    }
             }
    }
    Ответ написан
    Комментировать
  • Как называется строка выделенная grave accent(`) в golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Теги Tag по крайней мере специфицированы. Кроме использования посредством reflect еще стоит посмотреть свойство Type identity Вот пример этого свойства https://play.golang.org/p/dzng_FsbmA
    Ответ написан
    Комментировать
  • Где и главное как найти сильных Go (и не только) разработчиков под специфические задачи?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Самые сильные из известных мне российских Go разработчиков - nsf и Дмитрий Вьюков.
    Ответ написан
    Комментировать
  • Сокет чат на go?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Используется паттерн pub-sub. Действующий прототип можете рассмотреть на https://github.com/uvelichitel/nezabu/ (Извинения за легкий самопиар, можете пользоваться кодом на свое усмотрение.)
    Ответ написан
    4 комментария
  • С какого языка программирования начать изучение back-end?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    TL;DR востребовано, перспективно и денежно - Java, Python но в основном full-time enterprise. Freelance - PHP востребовано, не очень перспективно и денежно.
    Ruby проектировался не для web, это язык общего назначения. Rails это Ruby для web, но он громоздкий, Sinatra поменьше и злегантней. Python'у отдают предпочтение предпочтение enterprise - google, yandex. Python комфортней для web в плане синтаксиса и библиотек чем голый Ruby без Rails обвески. PHP проектировался для web. Не все признают его полноценным языком общего назначения, но в специализации ему нет равных. База готового кода огромна. Можно больше ничего не писать (все уже написано), можно собрать работающий url на PHP вообще не будучи программистом. Go проектировался для сетевого программирования, ниже уровнем, полноценней, быстрее, лучше спроектирован. Go - мой выбор, контрактов не очень много, оплачиваются нормально, конкуренция не высока. Fun factor - мне приятно на нем писать, а от PHP меня подташнивает(это личное).
    Изучение технологий рекомендую начать со стека протоколов(TCP/IP, http), метафоры port/socket/fileDescriptor, концепции server(отчетливого понимания, как последовательный в своей сути процессор может одновременно обслуживать несколько запросов и соединений).
    Ответ написан
    3 комментария
  • Примеры (с исходниками) enterprise проектов на go?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Groupcache написана Brad Fitzpatrick автором memcached для dl.google.com
    Ответ написан
    Комментировать
  • Как сделать пакет на golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    При канонической инсталляции Go директорий ~/go/src/pkg/ $GOROOT/src/pkg/ вообще не должно быть. Мой совет - сносите все и ставьте начисто из исходников. Процедура 'install from source' хорошо документирована и редко вызывает затруднения. GOROOT по умолчанию будет /usr/local/go (можно конечно развернуть и в home). GOPATH хотя и может быть внутри GOROOT но не обязан, они вообще не связаны. Внутри GOROOT и GOPATH будут каталоги src и pkg - для исходников и собранных библиотек соответственно. pkg не должен быть внутри src.
    Ответ написан
  • Странная работа в Go [exec] или как правильно выполнить команду OS?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Судя по пути /C - это windows. На nix системах код выглядит так exec.Command( "cp", filename, dest)или exec.Command( "mv", filename, dest). У меня нет windows чтобы проверить, но попробуйте exec.Command( "copy", filename, dest)
    Ну и можно вручную
    src, err::=os.Open(filename)
    dst, err:=os.Create(dest)
    size, err:= io.Copy(dst , src)
    if err != nil {fmt.Println(err)}
    fmt.Println("Размер", size)
    Ответ написан
    Комментировать
  • Как проверить объект на пустоту?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Про инициализацию в общем случае все верно уже написали, а в частном time.Time у вас есть
    if previousDate.IsZero() {
    Ответ написан
    Комментировать
  • Что выбрать (Golang&JavaScript) или (Python&PyQt)?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Нет. Как показывает практика писать десктопные приложения на Go, а UI рендерить яваскриптом на webkit - затея возможная, но дурацкая. На Go хорошо писать сетевые сервисы.
    Ответ написан
    1 комментарий
  • Вызов С функций с данными из Go пакета, возможно ли?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Попробуйту просто конвертировать типы
    C.MyFunc(*C.int(&go_arr[0]), C.int(len(go_arr))
    In C, a function argument written as a fixed size array actually requires a pointer to the first element of the array. C compilers are aware of this calling convention and adjust the call accordingly, but Go cannot. In Go, you must pass the pointer to the first element explicitly: C.f(&C.x[0]).
    Ответ написан
  • Кто-нибудь пользовался web framework Gin Golang? есть преимущество? Или стоит посмотреть в другую сторону?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Gin - отличный framework заслуженно пользующийся хорошей репутацией.
    Если хотите ложку дегтя, то
    • Gin использует httprouter в качестве Muxer. Это очень быстро, регулярно экспрессивно и параметризуемо но не совместимо со stdlib http.DefaultMuxer. То есть вы не сможете использовать нативные http.Handler().
    • Использование framework вообще не поощряется в сообществе(go-nuts MailingList, #go-nuts irc channel) в силу наличия богатой стандартной библиотеки. То есть помощь в сообществе вам будут оказывать неохотно.(Я например не стану разбираться в Gin, что бы что нибудь советовать)
    Ответ написан
    Комментировать
  • Использование языка программирования Go для веб проекта?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Многие считают, что самое время. Еще в РФ его Яндекс в production использует, ну и я. Я доволен.
    Ответ написан
    Комментировать
  • Особая магия с channels в golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Горутина-судья берет первое число из channel'я и закрывает его, т.к. свою задачу тот сделал, и номера от проигравших горутин нас не интересуют.
    Идеоматично закрывать channel посылающей стороне.
    Если посылка вам не нужна, но вы не хотите блокировать channel, то _=<-chan.
    А теперь суть вопроса.
    Во первых. Вы можете.
    Во-вторых. Из закрытого channel можно дочитать все посылки и потом сколь угодно долго читать из него zero value. Это свойство и эксплуатируется для широковещательной посылки.
    sync.Once безусловно корректное решение, но оно умаляет общность до одного призера. Можно обойтись только channel play.golang.org/p/T8k8_97Iqh
    Ответ написан
    Комментировать