golang reflect
这个程序看到几点: 1 TypeOf和ValueOf是获取Type和Value的方法 2 ValueOf返回的<float64 Value>是为了说明这里的value是float64 3 第三个b的定义实现了php中的string->method的方法,为什么返回的是reflect.Value[]数组呢?当然是因为Go的函数可以返回多个值的原因了。 package main import( "fmt" "reflect" ) type MyStruct struct{ name str...阅读全文
golang https
Go支持https协议的简单例子 我们知道除了http方式访问网页之外,还有一种加密的https方式。Go语言的net/http包中包含了这种https页面访问方式的支持。net/http包中的ListenAndServeTLS就是提供这个功能的。我们可以先看一下这个函数的原型。 func ListenAndServeTLS(addr string, certFile string, keyFile string, handler Handler) error 从上面的函数原型我们可以...阅读全文
golang学习的点点滴滴:匿名字段
定义一个struct,定义的时候是字段名与其类型一一对应,实际上Go语言支持只提供类型,而不写字段名的方式,也就是匿名字段,或称为嵌入字段。 当匿名字段是一个struct的时候,那么这个struct所拥有的全部字段都被隐式地引入了当前定义的这个struct。 让我们来看一个例子,让上面说的这些更具体化。 package main import "fmt" type Human struct { name string age int weight i...阅读全文
golang 字符串查找 中间字符 截取
func GetBetweenStr(str, start, end string) string { n := strings.Index(str, start) if n == -1 { n = 0 } str = string([]byte(str)[n:]) m := strings.Index(str, end) if m == -1 { m = len(str) } str = strin...阅读全文
Sublime Text 给golang 加点料。自定义build
如果你用的时windows , 请自觉忽略, linux && mac 通用。 Sublime Text 有个 gosublime ,用来提供golang的语法解析以及提示什么的。 说实话,我一直想要一个匹配自己开发环境的编译器, 不用来回切换到命令行去build 自己的代码。 先说,我的项目目录是这样的: project/ project/build project/package1 project/package2 每个目录都是独立的, 编译结果需要放到build 目录下。如果手动执行, 可...阅读全文
golang学习的点点滴滴:并发超时处理
golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。 原理: 并发一个函数,等待1s后向timeout写入数据,在select中如果1s之内有数据向其他channel写入则会顺利执行,如果没有,这是timeout写入了数据,则我们知道超时了。 package main import "fmt" import "time" func main() { ch := make(chan int, 1) timeout := make(chan bool, 1) ...阅读全文
Linux debian 上面使用七牛云存储,开发golang程序。(1)
想写点golang的程序,暂时没钱租服务器。 发现七牛支持golang开发。打算尝试下: 我的系统是debian。windows应该类似: 以前有开发googleappengine的经验。七牛也有类似的命令行,不过没有界面。 需要使用 qrsync 命令行辅助工具, 地址:http://docs.qiniutek.com/v3/tools/qrsync/ 有意思的是这个命令行工具是用golang开发的。所以支持多个操作系统。windows,l...阅读全文
golang 反射, 诡异的数据类型。 Type.Tag
最近再实现一些功能, 用到了protobuf 还有 xml 。从他们书写的类型或是测试用例中, 看到了大量这样的数据结构: type Person struct { Name string `xml:"name"` URI string `xml:"uri,attr"` Email string `xml:"email,omitempty"` InnerXML string `xml:",innerxml"` } 源码可以见xml/marshal_test.go http://golang.or...阅读全文
centos 6.5 下安装golang 1.3 环境 0.1
mkdir /opt/go vim go_install.sh wget -c https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz tar -C /usr/local -xzf go1.3.1.linux-amd64.tar.gz cat >>/etc/profile<<EOF export PATH=$PATH:/usr/local/go/bin EOF source /etc/profile go versi...阅读全文
gofn: golang 控制台源代码查询工具
golang作为开源项目,查询源代码,查看其具体实现及查看其包、函数的使用方法是非常常见的事情。 本人作为一名golang初学者,经常要查看源代码,经常要经过很多路径,最终打开了,可是花费的时间非常多,尽管目前无闻大神的gowalker提供了帮助,但是1.无网络情况下2.有网络的情况下,还是步骤多。3.初学者要查看高手的写法也是困扰我的一个方面。 故自己写了一个gofn,地址:https://github.com/eruca/gofn 还在改善...阅读全文
golang在ubuntu-12.04和centos-6.5上的安装
golang官方编译器安装与配置 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get install bison gawk gcc libc6-dev make 安装mercurial工具,目的使用hg命令来提取golang的源代码 $ sudo apt-get install mercurial 代取提取,如果您的网速比较慢的话,此步要多花点时间,我是在/home目录下运行下面命...阅读全文
数据结构-(队列顺序存储)循环队列的实现(golang)
import ( "errors" ) //循环队列结构体(顺序存储) type CirularQueue struct { elem []ElemType //储存的数据 front int //头指针 rear int //尾指针 } //初始化循环队列 func InitCQueue() *CirularQueue { cqueue := new(CirularQueue) cqueue.elem = make([]ElemType, MAXSIZE) cqueue.front = 0 c...阅读全文
golang 字符串操作实例
代码如下: package main import s "strings" //别名 import ( "fmt" ) var p = fmt.Println func main() { p("Contains: ", s.Contains("test", "es")) //是否包含 true p("Count: ", s.Count("test", "t")) //字符串出现字符的次数 2 p("HasPrefix: ", s.HasPrefix("test", "t...阅读全文
初识golang之数组,slice,map学习
数组: 定义方式:var arr [n]type,n表示数组的长度,type表示存储元素的类型。定义好后,可以使用arr[0] = 42,这样指定下标来进行数组的读取和赋值。 注意:在go中长度也是类型的一部分,因此[3]int和[5]int是不同类型的。 go中数组不可以改变长度,数组之间的赋值是值的拷贝赋值,即当把一个数组作为一个参数传人函数的时候,传入的其实是数组的备份。arr := [10]int{1,2,5:6},da := [2][4]int{[4]int{1,2...阅读全文
golang的一些试验小程序
golang的Map程序: package main import "fmt" type e interface{} func mult2(t e) e { switch t.(type) { case int: return t.(int) * 2 case string: return t.(string) + t.(string) } return t } func add3(t e) e { switch t.(type) { case int: ...阅读全文
golang在线编译+下载服务 建站之路
网站建立起源 http://build.golangtc.com 一开始我是想找一个网站,只要告诉它我的github地址,它就能把代码编译好,然后把代码给打包,给我一个下载地址。这样分享给朋友也很方便。 先是问了问谢大建的GoWeb交流群,有没有网站提供这样的功能,结果是没有。当时脑子一热,我就回了句:”既然没有我就自己写一个吧”。男人说话一定要算话嘛,然后就噼里啪啦的编码啦 #¥%……&*(。 调研编码 过去一直用drone.io,偶尔也用travis。不明白这两个NB的站为什么没有提...阅读全文
golang的vim工作环境配置
https://code.google.com/p/go/source/browse/misc/vim/readme.txt 如果遇到本地编译问题,可以使用http://gobuild.io搞定 基础工具安装 安装goimports go get github.com/bradfitz/goimports 安装gocode go get github.com/nsf/gocode 安装godef go get code.google.com/p/rog-go/exp/cmd...阅读全文
golang通过http端口访问hadoop
无聊尝试一下golang连接hdfs, 写了个hello world golang包地址 https://github.com/vladimirvivien/gowfs 安装 go get github.com/vladimirvivien/gowfs 写程序之前需要修改hadoop的两个配置文件 分别是 hsdfs-site.xml 里的 dfs.webhdfs.enabled <property> <name>dfs.webhdfs.enable...阅读全文