摘要: 博客转移到:http://iyf.cc/archives/58先写一段例子,例子是来自IRC #go-nuts 的chentm,非常感谢他的帮助.package mainimport ("fmt""net/http""net/url")func main() {proxy := func(_ *http.Request) (*url.URL, error) {return url.Parse("http://127.0.0.1:8087")}transport := &http.Transport{Prox 阅读全文
posted @ 2012-05-06 22:16 于风 阅读(14397) 评论(0) 推荐(2) 编辑
摘要: Go使用Gob存储数据使用Gob可以非常方便的存储数据以及传输数据.先来个例子.直接使用官方的.序列化一个结构体.package mainimport ("bytes""encoding/gob""fmt""log")type P struct {X, Y, Z intNamestring}type Q struct {X, Y *int32Name string}func main() {var network bytes.Buffer// Stand-in for a network connectionenc 阅读全文
posted @ 2012-05-06 20:32 于风 阅读(2545) 评论(0) 推荐(1) 编辑
摘要: 收集整理了一下的代码.参照着使用吧,自己做个记录.func Open(name string) (file *File, err error),*File是实现了 io.Reader这个接口byte[]转化为 bytes.Buffer:bytes.NewBuffer([]byte).一、建立与打开建立文件函数:func Create(name string) (file *File, err Error)func NewFile(fd int, name string) *File具体见官网:http://golang.org/pkg/os/#Create打开文件函数:func Open(na 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(2409) 评论(0) 推荐(0) 编辑
摘要: package mainimport ("net""fmt""io""bytes""encoding/binary")type Methods struct{ver, nmethods uint8methods uint8}type sock5cmd struct{ver, cmd, rsv, atyp uint8dst [255]uint8}type proxyCoder struct {connnet.Conn}func (c *proxyCoder) readMethods() Metho 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(387) 评论(0) 推荐(0) 编辑
摘要: Go语言似乎是个偏执狂,牺牲了不必要的灵活性,带来一些强制的编程风格和约定。比如:无任何形式的Makefile,模块就是目录、包就是目录、编译配制就是目录!不光目录被用上了,文件名还能指定用途。文件名后缀为_test.go的都是单元测试文件,_linux32.go就是32位linux特定的代码。不光文件名被用上了,函数名还有特定用途。在单元测试文件中,测试函数以Test开头。以大写字母开头的变量、类型和函数是外部可见的,小写字母开头的变量、类型和函数是外部不可见的。类似的约定也不好说是go语言首创,在一些文件格式中也有类似规范。但是我暂时不知道到有什么其它编程语言对编程风格这么带强制性。对于单 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(4925) 评论(0) 推荐(1) 编辑
摘要: 把结构体当二进制流传输是做协议的时候经常用到的功能。要做结构体与字节数组的转换,在C语言中只要做个指针类型的强制转换就行了。Go语言里也是有指针的,但是没有C的指针那么自由,默认的不能做任意类型转换。Go语言提供更安全的方式。最简单有效的是使用Gob库,另外,也可以使用encoding/binary把字节串转换成结构体。下面是一个使用的例子:package mainimport ("fmt""bytes""encoding/binary")func main() {buf := new(bytes.Buffer)var data = 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(4918) 评论(0) 推荐(0) 编辑
摘要: 物以类聚,人以群分。事物必以类分,以形命名。开始一个个学习Go语言中有哪些数据类型,以及这些类型的特点。Go语言中的方法是函数之外一个特别的概念。在Go语言的参考中说:A type may have a method set associated with it (§Interface types, §Method declarations).The method set of an interface type is its interface.The method set of any other type T consists of all methods with 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(429) 评论(0) 推荐(0) 编辑
摘要: Go语言中的结构体可以定义匿名字段。Go语言中没有对象,但是结构体却有大量对象的功能。并且用匿名字段的确可以实现对象的继承和重载。package mainimport "fmt"type A struct{x int}type A1 struct {A}func main(){a := A1{A{1}}fmt.Println(a.x, a.A.x)}在这个代码中,A1得到了A的所有字段,A称为匿名字段。A1同样也得到A的所有方法,这个可称为继承:package mainimport "fmt"type A struct{}func (self *A)do 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(1654) 评论(0) 推荐(0) 编辑
摘要: 下面的代码在hello world的基础上,使用ioutil库做文件操作也能实现基础的服务了。package mainimport ( "fmt" "net/http" "io/ioutil")func handler(w http.ResponseWriter, r *http.Request) { contents, err := ioutil.ReadFile(r.URL.Path[1:]) if err != nil { fmt.Fprintf(w, "404") return } fmt.Fprintf( 阅读全文
posted @ 2012-05-06 20:28 于风 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 线上介绍了 go 命令的最新 weekly 发布后,我决定写一些关于它的内容。我得承认,在第一次听说统一 go 工具的时候,我满是怀疑并对此非常恐惧。我担心它会像大多数其他语言特定的包管理器一样混乱。个人认为多数这种包管理器都是在重新发明轮子,并且与操作系统的包管理器发生冲突,让系统管理员生活的更加艰辛。另外,我确实喜欢 makefile,它们简单并且直接,工作得也很好。幸运的是,新的 go 工具驱散了我的恐惧!拒绝重复…最近在 go nuts 邮件列表上有大量的关于新的 go 工具的信息。官方的 go 文档也包含了一些关于如何使用 go 工具编写 go 代码的短文。无论如何,我觉得当前在这些 阅读全文
posted @ 2012-05-06 20:27 于风 阅读(846) 评论(0) 推荐(1) 编辑
摘要: 记录下JSON与byte[]转化的操作,先来试试不存到文件的,当然要试试保存文件的,这样就可以保存配置信息了,JSON只是一种方式,XML的操作方法很类似,至于其他的方式以后再研究。package mainimport ("fmt""encoding/json")func main() {m := Message{"测试", "测试序列化",false}b, _ := json.Marshal(m)//将json对象序列化为byte[]var ki Messagejson.Unmarshal(b,&ki)/ 阅读全文
posted @ 2012-05-06 20:27 于风 阅读(9894) 评论(6) 推荐(2) 编辑