摘要: GCC,GDB,Makefile 编译器GCC的用法: gcc 【选项】【文件名】【选项】【文件名】总体的选项:-E:对源文件进行预处理(包含头文件,宏等替换)-S:对源文件进行编译。(汇编代码)-c:对源文件进行编译或汇编-o:输出目标文件。调试选项:-g :产生调试信息优化选项:O0:不进行优化O1:对目标文件的性能进行优化静态链接是指编译系统在链接阶段把程序的目标文件和所需的函数库文件链接在... 阅读全文
posted @ 2012-05-07 15:34 于风 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 博客转移到: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) 编辑