Archive

Posts Tagged ‘go’

Syntax highlighting for golang

January 29th, 2011 No comments

在网上搜到Allister SanchezSyntaxHighlighter写了个高亮显示的扩展, js代码如下:

shBrushGo.js

SyntaxHighlighter.brushes.Go = function()
{
	// Copyright 2010 Sanchez, Allister Levi

	var declaration_type_words = 'struct func interface map chan package import type const var';

	var control_words = 'goto break continue if else switch default case for range go select return fallthrough defer';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// strings
		{ regex: new RegExp(this.getKeywords(declaration_type_words), 'gm'),		css: 'color2 bold' },
		{ regex: new RegExp(this.getKeywords(control_words), 'gm'),		css: 'keyword bold' }
		];
};

SyntaxHighlighter.brushes.Go.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Go.aliases	= ['go', 'golang'];

把这段js代码放到 wp-content/plugins/syntax-highlighter-mt/scripts 目录下, 并修改文件syntax-highlighter-mt/stxhighlightmt.php文件在文中增加:

      'xml xhtml xslt html    $x/scripts/shBrushXml.js',
      'go golang    $x/scripts/shBrushGo.js'

修改完后,在的博客里面可以这样使用:

package main
import "fmt"
func main() {
    fmt.Printf("yoohoo!")
}

显示效果如下:

package main
import "fmt"
func main() {
    fmt.Printf("yoohoo!")
}

参考: http://hackgolang.blogspot.com/2010/05/syntax-highlighting-for-golang.html

Bian Jiang
– EOF–

使用Go读取网页信息

January 29th, 2011 3 comments

打算用Go写个抓取网页的工具,就看了一下HTTP包, 简单的写了两个例子.
格式化后的代码参考: https://gist.github.com/801826

update: 由于新版本对log, http.header包做了调整, 更新代码
log.Exit –> log.Fatal
req.Header = map[string]string{} –> req.Header = map[string][]string{}

1. 直接使用http.Get取得信息

package main

import (
   "log"
   "io/ioutil"
   "http"
)

func main() {
   res, _, err := http.Get("http://bbs.golang-china.org/")
   if err != nil {
      log.Fatal(err)
   }
   defer res.Body.Close()

   body, _ := ioutil.ReadAll(res.Body)
   log.Println(string(body))
}

2. 自己定义HTTP的头信息

package main

import (
	"log"
	"http"
	"net"
	"io/ioutil"
)

func main() {

	url, err := http.ParseURL("http://bbs.golang-china.org/")

	if err != nil {
		log.Fatal(err)
	}

	tcpConn, err := net.Dial("tcp", "", url.Host + ":80")

	if err != nil {
		log.Fatal(err)
	}

	clientConn := http.NewClientConn(tcpConn, nil)

	var req http.Request
	req.URL = url
	req.Method = "GET"
	req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Chrome/9.0.570.0 Safari/534.11"
	req.Header = map[string][]string{}
	req.Header.Add("Connection", "keep-alive")

	err = clientConn.Write(&req)
	if err != nil {
		log.Fatal(err)
	}
	resp, err := clientConn.Read(&req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()		

	log.Println("Http Response: " + resp.Status)
	body, _ := ioutil.ReadAll(resp.Body)

	log.Println(string(body))
}
Categories: golang, Tech.Notes Tags: , , ,

Go语言开发工具 LiteIDE

January 19th, 2011 1 comment


LiteIDE 是Go语言的开发工具,采用QT开发的,支持Linux和Windows。

LiteIDE有插件管理,如果你愿意的话,可以自己给它开发插件。

目前目前版本0.1.8, 支持:
* UTF8文件加载和保存
* 语法高亮
* 项目管理
* 项目编译和运行
* 单文件的编译和运行
* gopromake自动编译工具
* 错误信息提示

GolangIDE is golang developer ide, based for liteide.

Features:

* UTF8 file load and save
* Syntax Highliter
* Project Manager
* Project Build and run
* No project, file build and run
* gopromake auto build tools
* build error can jump to source line

Download:

http://code.google.com/p/golangide/downloads/list

Source:

http://code.google.com/p/liteide/source/checkout

Update logs:
* 0.1.8 go ast view plugin, tool goastview.
* 0.1.6 build on win32/linux64bit; auto env lookup.
* 0.1.5 build error can jump to source line
* 0.1.2 gopromake file parser use goroutines
* 0.1.0 first release

From: https://groups.google.com/group/golang-nuts/browse_thread/thread/76e8670dd00c080a#

Categories: golang, OpenSource Tags: , , , , ,

Go 语言中文社区成立

February 3rd, 2010 No comments
Go 中文社区
  1. Go官方网站
  2. Go中文官网
  3. 中文论坛(测试中…)
  4. 中文用户讨论组(邮件)
  5. 中文翻译(SVN)
  6. GitHub与Google Code同步(GIT)
  7. QQ群: 102319854(申请加入请到中文论坛留言)

Go中文文档翻译计划

  1. Install Go 初稿完成
  2. Go Tutorial 初稿完成
  3. Effective Go 初稿25%

翻译的详细信息参考 翻译计划

TODO

1. 创建一个wiki用于资料的收集和整理

2. 把翻译的中文文档发送给Go官方。

3. 翻译PKG相关的文档。

4. 创建一个Blog用于发布有关Go的新闻

5. 用Go做个具体的开源项目。

Categories: golang Tags: , , ,

传说中的中文编程

January 31st, 2010 No comments
border@ubuntu:~/work/go/tutorial$ cat helloworld.go
package main
import fmt “fmt”
func 输出函数(s string) {
fmt.Printf(s)
}
func main() {
fmt.Printf(“Hello, 中文\n”)
变量 := “传说中的中文编程\n”
输出函数(变量)
}
border@ubuntu:~/work/go/tutorial$ 8g helloworld.go
border@ubuntu:~/work/go/tutorial$ 8l -o helloworld helloworld.8
border@ubuntu:~/work/go/tutorial$ ./helloworld
Hello, 中文
传说中的中文编程
GO中文资料参考: http://golang-china.org


Bian Jiang
Blog:  http://www.wifihack.net/

Categories: golang Tags: , , , ,