Go windows环境搭建
Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,并在Linux及Mac OS X平台上进行了实现. GO语言吉祥物,很可爱吧。 Go语言的hello world!代码: package main import "fmt" func main() { fmt...阅读全文
Go语言模拟实现接口
package main import ( "fmt" ) type USB interface { Name() string Connect() } type PhoneConnector struct { name string } func (pc PhoneConnector) Name() string { return pc.name } func (pc PhoneConnector) Connect() { fmt.Println("Connected:" + pc.name)...阅读全文
golang 位操作
package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^=...阅读全文
golang类型方法
## methods on values or pointers func (s *MyStruct) pointerMethod() { } // method on pointer func (s MyStruct) valueMethod() { } // method on value go语言为类型定义方法时有上述两种方式,初学者很容易陷入迷惑中,这两种定义方式有什么区别?该如何选择? ### 区别 首先我们把函数的形式稍微改变一下: func (s *MyStruct) pointe...阅读全文
Golang使用lxn/walk做GUI界面开发:邮件群发器
我也是刚刚使用walk这个组件,很多控件接口不熟悉,把我上次发的邮件群发器修改成图形界面的,线程发送邮件,gob库保存数据等。只提供作学习交流,仅供参考(界面很烂)。 接下来是main.go的代码: // Multi-SendEmail project main.go package main import ( "bufio" "encoding/gob" "errors" "fmt" "io" "net/smtp" "os" "strconv" "strings" "time" ) impor...阅读全文
Golang使用lxn/walk做GUI界面开发:邮件群发器
我也是刚刚使用walk这个组件,很多控件接口不熟悉,把我上次发的邮件群发器修改成图形界面的,线程发送邮件,gob库保存数据等。只提供作学习交流,仅供参考(界面很烂)。 接下来是main.go的代码: // Multi-SendEmail project main.go package main import ( "bufio" "encoding/gob" "errors" "fmt" "io" "net/smtp" "os" "strconv" "strings" "time" ) impor...阅读全文
对比 Python 和 Go 语言的每秒请求数
我使用Python工作已经有几年了,最近开始了一个关于GO的调查,主要看作是一个缓解瓶颈的实验,还没有大规模web服务器部署。 我用不同语言写了一个简单的REST服务,使用ab工具检测响应速度。 Python server.py 01 from bottle import route, run 02 03 @route('/') 04 def home(): 05 article = {'name': 'A Royal Baby', 'body':'A slow news week'} 06 r...阅读全文
使用 Go 语言实现优雅的服务器重启
Go被设计为一种后台语言,它通常也被用于后端程序中。服务端程序是GO语言最常见的软件产品。在这我要解决的问题是:如何干净利落地升级正在运行的服务端程序。 目标: 不关闭现有连接:例如我们不希望关掉已部署的运行中的程序。但又想不受限制地随时升级服务。 socket连接要随时响应用户请求:任何时刻socket的关闭可能使用户返回'连接被拒绝'的消息,而这是不可取的。 新的进程要能够启动并替换掉旧的。 ...阅读全文
beego datatables排序函数
datatables是个很不错的表格,使用GO时排序问题很麻烦,于是写了个函数 package tools import ( "github.com/astaxie/beego/context" "strconv" ) //datatables的排序 func DT_order(aColumns []string, Input *context.BeegoInput) string { maps := make(map[string]string) if iSortCol_0, _ := str...阅读全文
Go语言关于chan理解的实验
编程这东西如果不自己动手写,很可能就永远也不知道是怎么回事了。 之前学习GO写的一些小工具一直没有用到chan这东西(我是PHP的),搜索了一些文章,发现大神们都写得很精彩、很高深,但我这种小白是看不懂了,只是了解了大概是一种类似线程的机制。 还是不会用,只好自已实践下了: 不得不说代码很烂,不过对我来说够了,主要是理解!执行结果: 如果不用goroutine直接使用thread作为过程函数的话,输出顺序应该是str1...str5。 这里使用goroutine调用thread,可能“线程”启动...阅读全文
Golang简单写文件操作的四种方法
转载别人的代码 http://www.android100.org/html/201407/28/47230.html package mainimport ( "bufio" //缓存IO "fmt" "io/ioutil" //io 工具包 "io" "os" )func check(e error) { if e != nil { panic(e) } }/** * 判断文件是否存在 存在返回 true 不存在返回false */ func checkFileIsExist(filenam...阅读全文
golang for android
go是一种简洁高效的语言,go 1.4版本支持在android上运行 go get golang.org/x/mobile go get golang.org/x/mobile/example 运行示例代码,路径为$GOPATH/src/golang.org/x/mobile/example/libhello 运行all.bash编译并打包安装 如果报错: go build runtime: android/arm must be bootstrapped using make.bash 则说明...阅读全文
golang revel下免声明对象动态接收json post 数据
写惯了node服务端API,换到静态类型语言很不爽,规则一大堆~ 要动态必需的!必须的!的! 这里注意几个包 json转换和解析用 github.com/bitly/go-simplejson go get github.com/bitly/go-simplejson body转换解析用 直接导入 strings io/ioutil POSTMAN提交数据 {"data":"yes","hotel":["caonima","gelebi"],"HP":10000000} 控制器action 数据...阅读全文
Go 语言简介(上)— 语法
Hello World 文件名 hello.go 1 2 3 4 5 6 7 package main //声明本文件的package名 import "fmt" //import语言的fmt库——用于输出 func main() { fmt.Println("hello world") } 运行 你可以有两种运行方式, 解释执行(实际是编译成a.out再执行) 1 2 $go run hello.go hello world 编译执行 1 2 3 4 5 6 7 $go build hello...阅读全文
golang设计模式的一些看法
golang设计模式的一些看法 对于c、c++来讲,设计的对象存在着这几个问题 1、 对象是死的,只有自己的属性,行为(函数)。没有可以自己独立执行的机制 2、 对象是存活的,有自己的属性,行为(函数),还有独立执行的活动(自己独立的线程)。但由于系统的限制,这种对象数量不能过多(线程数量不能太多)。 3、 对象是半存活的,有自己的属性,行为,没有独立的执行活动(没有自己独立的线程)。需要借助于其他对象的线程调度。 以上是c、c++语言的一些限制。其他语言不是熟悉,不进行评判。但大多数也是类似的...阅读全文
golang revel框架cmd命令安装被墙超时问题
Get https://code.google.com/p/go/source/checkout?repo=net: dial tcp 74.125.31.113:443: connection timed out Get https://code.google.com/p/go/source/checkout?repo=net: dial tcp 74.125.31.110:443: connection timed out 解决 大陆苦逼程序员的websocket组件 下载timeout的情...阅读全文
微信服务号和Go语言开发初学者开发服务号过程中的填坑之旅
最近给某用户做微信服务号自定义开发,需求很简单,主要功能是从用户已有的系统读取数据显示在服务号中。虽然是微信服务号和Go语言的开发初学者,但是感觉实现过程也应该非常简单,也就是从用户已有的外网数据库中读出数据,调用微信的API展示,相信一周之内可以很快搞定。没想到实际开发过程中还是遇到了一些坑,将填坑过程总结如下: 1、 用户要求自定义菜单的二级菜单有6项,一开始没当回事,后来看微信API文档发现只支持5项二级菜单。 这个好解决,和用户沟通把多余的二级菜单移到另一个主菜单下,但估计会给用户留下不...阅读全文