一般大家都是看看http://golang.org/的文章就算罷了,但真正的coder要在實踐編碼中找到自信。
所以區區下載了https://github.com/andrebq/goscript上的goscript,並通過修正,使之
實現正確的參數傳遞,並且不用那噁心的comment實現,省得每次編輯器都提示檔案被修改。
關鍵的實現是個叫isource()的函數,用以替代goscript原有的comment():
func isource(dst , src string) {<br /> file1, err := os.Open(src, os.O_RDONLY, 0)<br /> if err != nil {<br /> error(fmt.Sprintf("Can't open %s", src))<br /> }<br /> defer file1.Close()<br /> os.Remove(dst)<br /> file2, err := os.Open(dst, os.O_WRONLY | os.O_CREAT, 0644)<br /> if err != nil {<br /> error(fmt.Sprintf("Can't open %s", flag.Args()[1]))<br /> }<br /> defer file2.Close()<br /> bufFile1 := bufio.NewReader(file1)<br /> bufFile2 := bufio.NewWriter(file2)<br /> defer bufFile2.Flush()<br /> head, _ := bufFile1.ReadString('/n')<br /> if len(head) >= 2 && head[0:2] != "#!" {<br /> //error("First Line: " + head)<br /> bufFile2.WriteString(head + "/n")<br /> }<br /> io.Copy(bufFile2, bufFile1)<br />}<br />
進一步的,我發現golang首頁上的tag產生工具沒一個可以實現在最近版的go上編譯,無奈再次使用強大的ctags regex文法:
#!/bin/sh<br />ctags --exclude=*_test.go --langdef=go --langmap=go:.go --regex-go="/^func //([^)]+//)/s+(/w+)//1/i" --regex-go="/^func/s+(/w+)//1/i" -Re $*
go和emacs是區區在42區的標籤
之一。
歡迎一起交流。