2017年12月28日 星期四

install vim-go(on Mac OSX)

install vim-go 的插件
# curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# git clone https://github.com/fatih/vim-go.git ~/.vim/plugged/vim-go

編輯 .vimrc
# vim ~/.vimrc

在 vimrc 中加入下列三行後儲存離開
call plug#begin()
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
call plug#end()
 
最後再用 vim 去看 golang 的 code 就可以發現已經安裝好了
 
note: 注意 vim 的版本,若安裝失敗有可能是 vim 版本太舊請先更新
      # brew upgrade vim
 
 
使用方式:
 
執行,直接在 vim 底下輸入“:GoRun“ 即可看到結果.
 
編譯,在 vim 底下輸入“:GoBuild”,若成功可以看到 “vim-go: [build] SUCCESS”
  



reference:

https://github.com/fatih/vim-go-tutorial

http://www.evanlin.com/switch-ide-to-vim/

http://fealonelei.github.io/2015/08/18/MAC-Vim-IDE-for-Go(lang).html

2017年12月13日 星期三

golang mkdir permission error

今天在Linux底下執行golang的os.Mkdir發生資料夾權限問題,透過ls -al去看才發現資料夾的權限跟我在os.Mkdir所設定的權限完全不一樣.後來發現建立資料夾時除了需要指定權限外,也需要加上系統的Umask.

原code:
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. )
  6. func main() {
  7. err := os.MkdirAll("gotest/", 0777)
  8. if err != nil {
  9. panic(err)
  10. }
  11. } 
 
修正後:
  1. package main

  2. import (
  3. "fmt"
  4. "os"
  5. "syscall"
  6. )

  7. func main() {
  8.     mask := syscall.Umask(0)
  9.     defer syscall.Umask(mask)
  10.     err := os.MkdirAll("gotest/", 0777)
  11.     if err != nil {
  12.         panic(err)
  13.     }
  14. }