Go -- Google 发布的新的编程语言
刚做外国网站上看到一篇文章 "Google creates programming language to simplify app dev", 报道Google 在周二发布了一种新的编程语言,叫做 "Go” , 该语言设计来是编码更简单,而不会损失程序的性能,该语言是作为系统级编程语言被开发的,而且是开源发布的,其官方网址为 http://golang.org/, 喜欢尝试新语言的可以去尝试一下...阅读全文
刚做外国网站上看到一篇文章 "Google creates programming language to simplify app dev", 报道Google 在周二发布了一种新的编程语言,叫做 "Go” , 该语言设计来是编码更简单,而不会损失程序的性能,该语言是作为系统级编程语言被开发的,而且是开源发布的,其官方网址为 http://golang.org/, 喜欢尝试新语言的可以去尝试一下...阅读全文
注:本文对于新版本的golang并不使用,go1以后go的性能已经有了比较好的提升,具体测试见: http://www.cnblogs.com/QLeelulu/archive/2012/08/12/2635261.html 听说Go是很不错的语言,了解了一下,一些特性确实很不错。 顺便测试了一下http与node.js的性能对比。 go的代码: (注:是用8g, 8l编译的) node.js的代码: ab测试结果: ==** GO **== $ ab -c 100 -n 1000 http://127.0.0.1:8080/ This is ApacheBench, Version 2.3<$Revision: 655654$> Server Software: Server Hostna...阅读全文
先做一个练习题:http://tour.golangtc.com/moretypes/18 练习:map 实现 `WordCount`。它应当返回一个含有 s 中每个 “词” 个数的 map。函数 wc.Test 针对这个函数执行一个测试用例,并打印成功或者失败。 你会发现 strings.Fields 很有帮助。 我的代码: package main import ( "code.google.com/p/go-tour/wc" "strings" ) func WordCount(s string) map[string]int { str := strings.Fields(s)//把字符串分成单词数组 m := make(map[string]int) for i:=0;i
(pprof) top Total: 53.0 MB 29.5 55.7% 55.7% 29.5 55.7% reflect.unsafe_NewArray 20.0 37.7% 93.4% 20.0 37.7% encoding/json.(*decodeState).literalStore 2.5 4.7% 98.1% 2.5 4.7% reflect.unsafe_New 0.5 0.9% 99.1% 0.5 0.9% encoding/json.(*Decoder).readValue 0.5 0.9% 100.0% 0.5 0.9% github.com/go-sql-driver/mysql.init路2 (pprof) ^C[dog@s3 twitter]$ go tool ...阅读全文
载http://blog.sina.com.cn/s/blog_487109d101018fcx.html 略做加工 在找“闭包”的资料时找到这个: http://www.cnblogs.com/Jifangliang/archive/2008/08/05/1260602.html 这里解说得很清楚明了,例子也很间单。 闭包是“函数”和“引用环境”组成的整体。 在这里用Go重写一下他的例子: package main import "fmt" func ExFunc(n int) func() { sum:=n a:=func () { //把匿名函数作为值赋给变量a (Go 不允许函数嵌套。 //然而你可以利用匿名函数实现函数嵌套) fmt.Println(sum+1) //调用本函数外的...阅读全文
golang的new和make主要区别如下: 1、make只能用来分配及初始化类型为slice,map,chan的数据;new可以分配任意类型的数据 2、new分配返回的是指针,即类型*T;make返回引用,即T; 3、new分配的空间被清零,make分配后,会进行初始化。effective go举了一个例子,见:http://golang.org/doc/effective_go.html#allocation_make 对于struct的分配和初始化,除了可以使用new外,还可以这样做: T {},例如 func TestAlloc(t *testing.T) { type T struct { n string i int f float64 fd *os.File b []byte ...阅读全文
BEFORE 今天发现,go的优势除了它的轻量线程(goroutine)提供了更方便灵活的并发编程模式之外,它的I/O机制也设计的非常给力。 之前,我在向其他服务器发送json数据时,都需要先声明一个bytes缓存,然后通过json库点击打开链http://business.jxufe.cn/e/space/?userid=2631180?feed_filter=/HF/2016-10-14/2910.gcvd http://business.jxufe.cn/e/space/?userid=2631181?feed_filter=/XI/2016-10-14/6095.nhjm http://business.jxufe.cn/e/space/?userid=2631182?feed_fi...阅读全文
quick-cocos客户端程序: local MainScene = class("MainScene", function() return display.newScene("MainScene") end) local info={ hero={ name="zhanshen",level=2,hp=500 }, pet={ name="wind",hp=100,attack=200 } } function MainScene:ctor() function onRequestFinished(event) local ok = (event.name == "completed") local request = event.request if not ok then -- 请...阅读全文
合理的使用cookie可以极大的提高网站的用户体验,这一篇文章主要来讨论一下,go中是如何处理cookie的。 声明 Go语言中通过net/http包中的SetCookie来设置: //设置cookie的方法声明 http.SetCookie(w ResponseWriter, cookie *Cookie) //Cookie的声明 type Cookie struct { Name string Value string Path string Domain string Expires time.Time RawExpires string // MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0 means dele...阅读全文
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1824 【题目】 Problem Description 小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。 —— 余光中 集训是辛苦的,道路是坎坷的,休息还是必须的。经过一段时间的训练,lcy决定让大家回家放松一下,但是训练还是得照常进行,lcy想出了如下回家规定,每一个队(三人一队)或者队长留下或者其余两名队员同时留下;每一对队员,如果队员A留下,则队员B必须回家休息下,或者B留下,A回家。由于今年集训队人数突破往年同期最高记录,管理难度相当大,lcy也不知道自己的决定是否可行,所以这个难题就交给你了,呵呵,好处嘛~,免费**漂流一日。 Input 第一行有两个整数,T和M,1<=T<=1...阅读全文
Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。 如果你花时间学习这门语言,阅读官方说明、wiki、邮件列表讨论、大量的优秀博文和Rob Pike的展示,以及源代码,这些技巧中的绝大多数都是显而易见的。尽管不是每个人都是以这种方式开始学习的,但也没关系。如果你是Go语言新人,那么这里的信息将会节约你大量的调试代码的时间。 初级 开大括号不能放在单独的一行 在大多数其他使用大括号的语言中,你需要选择放置它们的位置。Go的方式不同。你可以为此感谢下自动分号的注入(没有预读)。是的,Go中也是有分号的:-) 失败的例子: package ...阅读全文
a 首先打开网页 http://wiki.tcl.tk/1359 【trains3.tclUpdated 2012-12-09 19:44:49 by pooryorick】 b 把网页里提到的tcl/tk代码复制到如下go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里或命令行里go run go代码文件,运行效果如下 【这700行代码的游戏画面简略抓了7张风景,没把...阅读全文
go语言之http服务器的简单建立 先导入net/http包 import ( "net/http" ) 然后再添加2行代码就可以了。 func main() { h := http.FileServer(http.Dir(".")) http.ListenAndServe(":8001", h)//启动监听 } 以上代码是什么意思呢? http.FileServer函数里面的参数是web根目录的文件地址,这里设置为当前启动的目录。 然后程序会自动寻找这个目录下的index.HTML文件,进行被客户端访问。如下图所示。 还有一种通过自行设定内容返回信息给客户端。如下 func Hello(w http.ResponseWriter, req *http.Request) { w.Write(...阅读全文
An AVL tree is a self-balancing binary search tree. In an AVLtree, the heights of the two child subtrees of any node differ byat most one; if at any time they differ by more than one,rebalancing is done to restore this property. Figures 1-4illustrate the rotation rules. Now given a sequence of insertions, you are supposed to tell theroot of the res...阅读全文
因为几乎任何东西都可加以方法,几乎任何东西都可满足某界面。一个展示的例子是 http 包定义的 Handler 界面。任何物件实现了Handler 都可服务 HTTP 请求。 type Handler interface { ServeHTTP(*Conn, *Request) } ResponseWriter 本身是个界面,它提供一些可访问的方法来返回客户的请求。这些方法包括标准的 Write 方法。因此 http.ResponseWriter 可用在 io.Writer 可以使用的地方。Request 是个结构,包含客户请求的一个解析过的表示。 为求简短,我们忽略 POST 并假定所有 HTTP 请求都是 GET;此简化不会影响经手者的设置。下面一个小而全的经手者实现了网页访问次数的计数...阅读全文
用Golang来写一个http服务极其简单,写一个https服务,也一样的极其简单。 生成key.pem和cert.pem: openssl req -new -x509 -key key.pem -out cert.pem -days 1095 package main import ( "fmt" // "io/ioutil" "net/http" "log" ) func main() { http.HandleFunc( "/", makeHandler ) err := http.ListenAndServeTLS( ":8080", "cert.pem", "key.pem", nil ) if err != nil { log.Fatal("ListenAndServe: ",...阅读全文
把Go程序变小的办法是: go build -ldflags “-s -w” (go install类似) -s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了, 这个等价于普通C/C++程序被strip的效果), -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。 比如,server.go是一个简单的http server,用了net/http包。 $ go build server.go $ ls -l server -rwxr-xr-x 1 minux staff 4507004 2012-10-25 14:16 server $ go build -ldflags “-s -w” server.go $ ls -l server -rwxr...阅读全文
package main import( "fmt" "io/ioutil" "net/http" "regexp" "strings" "os" "image/png" "image/jpeg" "image" ) var filePath = "F:/girls/" func fileExist(fileName string) bool { if _,ok:=os.Stat(fileName);ok == nil{ return true } return false } func Substr(str string, start, length int) string { rs := []rune(str) rl := len(rs) end := 0 if start < 0 { ...阅读全文
http://www.oschina.net/translate/programmers-guide-to-go-with-liteide?cmp golang 语言特性简介 环境搭建教程: http://jingyan.baidu.com/article/c45ad29cdcab4f051753e2a8.html golang 环境搭建 最迅速版本 环境搭建资源列表: liteide http://www.oschina.net/action/project/go?id=21127&p=download GOLANG http://www.golangtc.com/download 5分钟搞定所有...阅读全文
常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声明常量 const [(] 名称 [数据类型] =...阅读全文
开始一项新语言前需要先了解该语言的语法(如果你有其他语言的编程知识的话),开始学习前,我们一起了解下Go的格式。 如果大家都统一编码风格,那么在维护他人代码时就能带来便利。同时我们在提交代码前执行一次fmt命令,以便提交统一风格的代码。 注释 Go支持C语言风格的“//”块注释,也支持C++风格的行注释,同时可使用/**/进行包的 注释. 我们看string包的源代码,使用//注释了包,方法以及行。我们需要养成好的习惯,尽量去多写些注释,这样不但有利于自己以后的回顾,已给他人阅读你的代码提供了方便,当然Go下的源代码使用Go命令能够生成文档,而文档的描述内容源自注释,在编码阶段就同步书写注释,而不要在整理代码时书写注释(此时的思维没有编码时清晰,补救中总容易丢失些东西)。 1// Copyr...阅读全文
a 首先打开网页 http://wiki.tcl.tk/4206 b 把网页里提到的tcl/tk代码复制到如下go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里或命令行里go run go代码文件,运行效果如...阅读全文
9.蛤蟆笔记go语言——方法和接口 方法 Go 没有类。然而,仍然可以在结构体类型上定义方法。 方法接收者 出现在 func 关键字和方法名之间的参数中。 package main import ( "fmt" "math" ) type Vertex struct { X, Yfloat64 } func (v *Vertex) Abs() float64 { returnmath.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v :=&Vertex{3, 4} fmt.Println(v.Abs()) } 执行: 5 你可以对包中的 任意 类型定义任意方法,而不仅仅是针对结构体。 但是,不能对来自其他包的类型或基础类型定义方法。 package main...阅读全文
到了新单位总算有点闲了,接着倒腾HTTP。之前的文章可以参考:《基于TCP套接字,通过Golang模拟HTTP请求》和《基于TCP套接字,通过Golang模拟HTTP请求(续)》。 之前都是研究的客户端,现在来研究一下服务端。《HTTP权威指南》上面有一个非常简单的用perl开发的一个服务器,我就用大Golang照着写一个。HTTP协议是基于传输层的TCP协议,监听80端口。简单来写(复杂的我也不会),就是最简单的TCP监听,接收消息,处理并返回。我是参考的《Go socket编程实践: TCP服务器和客户端实现》。主逻辑就是这样: ln, err := net.Listen("tcp", fmt.Sprintf("%s:%d", "", *portFlag)) defer ln.Close...阅读全文
Go in Action Go in Action - Manning 2016 目录 1 介绍Go2 Go快速入门3 打包、工具4 数组、切片和maps5 Go的类型系统6 并发7 并发模式8 标准库9 测试与性能基准 介绍Go fmt.Println("Hello, world")?这本书里似乎没提到Go异常处理? Go快速入门 log.SetOutput(os.Stdout) //import ("log" ...)package main //main必须在main包里才会生成可执行文件? 通常以所在目录命名? func init() { ... }func main() { ... } search.go var matchers = make(map[string]Matcher...阅读全文
win7(64位)下eclipse配置golang使用第三方库 1.安装git的windows客户端: git的windows客户端下载地址为(需要的可以直接从我上传的资源中寻找):http://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git 安装过程一路next,其中有一个步骤需要注意的,这一步可以让你在dos命令行中使用git命令,这样比较方便一点,如图: 2.进入工程的src目录下,右键Git Bash,弹出命令行窗口,输入:go get -u bitbucket.org/weager/utils(这是bitbucket上的一个开源的工具包),执行完成查看目录,已经下载到src目录下,可以在工...阅读全文
【技术人员对Go语言思考和选择】 《许世伟:云计算时代,我与Go语言难解的缘分》 http://www.programmer.com.cn/13730/ 《许式伟:从关注 Erlang 转向 Go 的原因是什么?》 http://www.zhihu.com/question/21729007 《许式伟:为什么我们需要一门新的语言,互联网时代的C语言-Go》 http://www.docin.com/p-465492390.html 《为什么要使用 Go 语言,Go 语言的优势在哪里?》 http://www.zhihu.com/question/21409296 《使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?》http://www.zhihu.com/question/2109...阅读全文
本文的是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术。 文章结构包括: Client-Get 请求 Client-Post 请求 Server 处理 Get 和 Post 数据 在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码。 一、Client-Get package main import ( "fmt" "net/url" "net/http" "io/ioutil" "log" ) func main() { u, _ := url.Parse("http://localhost:9001/xiaoyue") q := u.Query() q.Set("username", "user") q.Set("pass...阅读全文
package main import ( "fmt" // "path" // "runtime" // "os" // "regexp" // "strings" // "time" "encoding/json" // "sort" ) func main() { Example() } type List struct { Url string Source string State string } type Person struct { Name string Age int Slices []string //slice Mapstring map[string]string StructArray []List //结构体的切片型 MapStruct map[string]...阅读全文
/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 一直讲golang标准库,不仅大家看烦了,我自己写的都比较难受了,所以写一个简单的静态文件服务器,里边有上传下载,和简单的html,你可以根据你自己的需求来修改~~ 包含功能 静态文件模板 文件上传 文件查看和下载 使用的包 import ( "fmt" "html/template" "io" "net/http" "os" "path/filepath" "regexp" "strconv" "time" ) 包含知识点 //静态文件服务器 http.FileServer(http.Dir("目录")) //手工配置服务和路由 s := &http.Server{ Addr: ":8080...阅读全文
客户端quick-cocos程序如下: local info={hero={ heroname="zhanshen",herolevel=1,herohp=200 }, [1]={ name="fengbao",level=2,att=100 } } function onRequestFinished(event) local ok = (event.name == "completed") local request = event.request if not ok then -- 请求失败,显示错误代码和错误消息 print(request:getErrorCode(), request:getErrorMessage()) return end local code = reque...阅读全文
在笔记本中写了一个简易web程序,但是编译失败,提示“syntax error: nested func not allowed” 。 不明白什么意思,幸好代码量小,原来是方法的末尾的“}”丢了! package main import "fmt" import "net/http" func main() { http.HandleFunc("/", hello) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) } } func hello(rw http.ResponseWriter, r *http.Request) { fmt.Fprintf(rw, "Hello lao yu !\n...阅读全文
【论坛、网站】: http://studygolang.com/ http://golangtc.com/ https://golang.org/ 一、数组及Slice 参考:http://www.jb51.net/article/57121.htm 二、go func问题 及 defer func Server(listen *net.TCPListener) { for { conn, err := listen.AcceptTCP() if err != nil { fmt.Println("AcceptTCP_Err:", err.Error()) continue } fmt.Println("AcceptTCP_From:", conn.RemoteAddr().String()...阅读全文
例子 package main import ( "github.com/lxn/win" "strconv" "syscall" ) func _TEXT(_str string) *uint16 { return syscall.StringToUTF16Ptr(_str) } func _toString(_n int32) string { return strconv.Itoa(int(_n)) } func main() { var hwnd win.HWND cxScreen := win.GetSystemMetrics(win.SM_CXSCREEN) cyScreen := win.GetSystemMetrics(win.SM_CYSCREEN) win.Message...阅读全文
1 go语言特性 自动垃圾回收,丰富的内置类型,函数多返回值,匿名函数与闭包,类型与非侵入式接口,并发编程(goroutine),反射机制。 2 基本语法 2.1 变量 2.1.1 变量声名方式 1. var v1 int or var v1 int = 3(声明并赋值) 2. var v2 = 3 (自动确定类型) 3. v3 := 3 2.1.2 其它 多重赋值: i, j = j, i (交换值) 支持匿名变量(_) 2.2 常量 常量定义: const Pi float64 = 3.14159 const( size int = 3 eof = -1 ) const与itoa用法,一般可用于枚举型 2.3 数据类型 2.3.1 基本类型 1. 布尔类型:bool(只能接受true和f...阅读全文
http://colobu.com/2015/10/09/Linux-Signals/ 信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式。一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,告诉它们某个事件发生了。 当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。 如果目标进程先前注册了某个信号的处理程序(signal handler),则此处理程序会被调用,否则缺省的处理程序被调用。 发送信号 kill 系统调用(system call)可以用来发送一个特定的信号给进程。 kill 命令允许用户发送一个特定的信号给进程。 raise 库函数可以发送...阅读全文
载自:https://studygolang.com/articles/3278 在W7上安装Go 下载Go的安装包,运行msi文件。 在环境变量配置Go的环境。 GOPATH (go语言项目的工作目录) GOROOT(go的安装目录) 在path中添加GO的安装目录。 在命令行输入 go env 可 以查看Go安装的架构 在命令行输入 godoc -http=:8081 可以在本地浏览器通过http://localhost:8081对Go的内置文档进行访问查看。 Go在Submit Text2上编译环境搭建。 使用go build XXX.go进行编译,会生成.exe文件 执行XXX,会输出程序结果。 package main import ( "fmt" ) func main() { ...阅读全文
练习:HTTP 处理 实现下面的类型,并在其上定义 ServeHTTP 方法。在 web 服务器中注册它们来处理指定的路径。 type String string type Struct struct { Greeting string Punct string Who string } 例如,可以使用如下方式注册处理方法: http.Handle("/string", String("I'm a frayed knot.")) http.Handle("/struct", &Struct{"Hello", ":", "Gophers!"}) package main import ( "fmt" "log" "net/http" ) type String string type Stru...阅读全文
文地址:http://www.the5fire.com/setup-golang-env-on-mac.html 安装起来是比较容易的,简单介绍一下,以后经验多了在上干货。 1. 安装 对于所有的平台 官网 上都有安装说明,这里只针对mac系统,到 下载页面 下载最新的对应版本,下载完直接安装即可 2. 设置环境变量 配置 GOROOT 和 GOPATH: 创建家目录下的go文件夹: mkdir ~/go 下面的东西放到.bash_rc(也可能是.bash_profile或者.zshrc) export GOROOT=/usr/share/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin 试一下 新建一个hello.go的文件: ...阅读全文
Go 1.7终于发布了,这个版本的一大特色是引入了一个新的基于SSA的编译器! SSA是一个描述低层次的操作集合的方法,比如隐射到系统底层操作的加载和存储操作。而SSA的特殊之处在于它有无限数量的寄存器。它本身不是特别有趣,除了它启用了一类很容易理解的优化传值这一点以外,因为这个特性使得编译速度更快,编译出的二进制文件更小。Go的新版本发布说明实现正在成熟,并且开始利用llvm(wider world of compiler technology)中的技术和实践。 新的基于SSA后端除了带来的性能提升,还提供了一系列的新工具允许开发者与SSA机制交互。这个工具输出了SSA过程语句,优化传值,和Go特有的汇编。当使用go工具来反汇编时,可以通过设置GOSSAFUNC环境变量为函数名,比如: $...阅读全文
defer的边界defer是以函数为边界的,也就是说,只有在当前函数将要退出的时候才会运行。Nested channel select的返回① 对于nested同一个channel select,如何想要层层返回,最好的方式就是直接close channelpackage main import ( "fmt" "time" ) func main() { stopc := make(chan int) go func() { select { case <-stopc: fmt.Println("stopc 0") select { case <-stopc: fmt.Println("stopc 1") } fmt.Println("stopc 2") } }() // stopc <-...阅读全文
有些事应该坚持去做 当你半途而废的时候意味着你又要重新开始。那么 Golang Hello world! Java Android 新手 学习 Golang First Day ! go 语言下载: https://golang.org/dl go 项目环境配置: GOPATH: 我的是在G盘 G:\GoProject ok 配置完毕 wind+R, cmd go env查看: 接下来 用运行hello world 在GOProject 里面新建Hello.go文件 不是txt 文件 记事本或者Notepad++打开 package main import "fmt" func main(){ fmt.Printf("hello,Girl\n")//个人习惯 嘿嘿} (接下来用Sublime...阅读全文
自:http://www.mikebai.com/Article/2009-11/757.html <input type=button value=刷新 onclick="window.location.reload()"> <input type=button value=前进 onclick="window.history.go(1)"> <input type=button value=后退 onclick="window.history.go(-1)"> <input type=button value=前进 onclick="window.history.forward()"> <input type=button value=后退 onclick="window.history...阅读全文
用go语言进行冒泡排序法 package main import ( "fmt" // "io/ioutil" // "net/http" // "reflect" ) func main() { var array []int array = []int{2, 10, 45, 6, 7, 3, 5, 23} for i := 0; i < len(array); i++ { for j := 0; j < len(array)-i-1; j++ { if array[j] < array[j+1] { array[j], array[j+1] = array[j+1], array[j] } } } fmt.Println(array) ...阅读全文
文:http://coolshell.cn/articles/8489.html 希望你看到这篇文章的时候还是在公交车和地铁上正在上下班的时间,我希望我的这篇文章可以让你利用这段时间了解一门语言。当然,希望你不会因为看我的文章而错过站。呵呵。 如果你还不了解Go语言的语法,还请你移步先看一下上篇——《Go语言简介(上):语法》 goroutine GoRoutine主要是使用go关键字来调用函数,你还可以使用匿名函数,如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package main import "fmt" func f(msg string) { fmt.Println(msg) } func main(){ go f("goroutine") go ...阅读全文
环境 : sublime text, ubuntu (至于环境变量的配置, 可以参考 http://www.cnblogs.com/yourihua/archive/2012/06/04/2529333.html) 我们第一个程序将打印出经典的 "hello world", 下面是代码 package main import ( "fmt" ) func main() { fmt.Println("hello world") } 1 : 将以上的代码保存为 helloworld.go, 加上可执行的权限 (chmod +x helloworld.go) 2 : 在 commond 直接运行 go run helloworld.go 总结 : 对就是这么简单, 有时我们想将程序编译成 bina...阅读全文
下图是关于rest的使用介绍,有些老生常谈了。 当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现,而且对于使用REST开发的应用程序更加容易扩展。 其实说白了,就是根据不同的方法,来分类不同的任务~ 我这边使用golang的drone/routes库实现restful服务。 下面是实现rest的具体事例代码。 Python package main import ( "fmt" "github.com/drone/routes" "net/http" ) func getuser(w http.ResponseWriter,...阅读全文
windows下安装: 包下载路径:http://golangtc.com/download 使用前需要dos执行 set GOROOT= set GOOS=mingw set GOARCH=386 set PATH=/bin 编译执行test.go文件需要执行 8g test.go //编译生成test.8 8l test.8 //连接生成8.exe 8 //执行8.exe example: package main import “fmt” func main() { fmt.Print(“Hello, World\n”) } 中文支持需要保证go文件采用utf-8格式存放,且没有BOM字符 1、dos执行chcp 65001 //修改代码页为utf-8,否则无法通过编译 2、修改dos...阅读全文
http://www.jb51.net/article/56778.htm http://www.oschina.net/translate/how-go-uses-go-to-build-itself http://zhulei.biz/archives/27/ http://www.360doc.com/content/14/0202/13/9200790_349333810.shtml http://abloz.com/2013/08/30/try-go-language.html http://www.infoq.com/cn/articles/use-liteIDE-develop-g...阅读全文
用golang写一个http代理,可以抓包和科学上网 缘起 因为在工作中需要对上网进行限制,只让我们的app上网,意思就是放行app请求的所有域名或ip,而其他域名都禁止,所以我需要对app的http请求进行抓包。上网搜了一下,win下的fiddler不错,可惜我用的是Linux系统,fiddler不跨平台,找了下linux下的抓包软件,当然tcpdump和wireshare是足够强大的,完全可以实现我要的小小要求,但用起来有一定的复杂性,门槛稍高。在网上找到其他类似的软件还挺多,charles、NProxy等,最后发现mitmproxy最符合我的胃口,如图: 但是mitmproxy的安装依赖太多,python就是这样,一不小心就报错了,so,想着用golang实现类似的功能,自己也很喜欢g...阅读全文