Go语言中文网 为您找到相关结果 10

Go的List操作上的一个小“坑”

一直想不清楚一个问题,简单设计的东西到底是“坑多”还是“坑少”呢? 复杂的设计,考虑的太全面,使用起来更麻烦,使用者容易陷入乱,落入自身的陷阱;而简单的设计呢,在许多方面上又顾及不周,如果使用者对其“设计”没仔细研究,或者其实现本身又是一个黑盒子,也容易掉入到设计本身遗留下来的“陷阱”。下面是我刚开始使用Go写代码时碰到的一个小“坑”,这个“坑”的原因我归结为后者。 这个“小坑”来自于go的container/list package的使用上。导致“坑”的代码大概如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 package main import ( "container/list"...阅读全文

博文 2014-10-25 17:00:00 kjfcpua

golang与node.js的http模块性能对比测试(go1)

去年的时候,曾经简单对比了一下golang和nodejs的http模块的性能,见: golang与node.js的http对比测试 那时golang还没发布go1,http模块比nodejs差得很远。 go1出来已经有一段时间了,我知道go的http模块性能已经有比较大的提升,但是最近依然见到有人提起去年写的那篇文章,为避免产生对golang的误解,对于go1的最新测试结果如下。 测试是在Ubuntu 12.04 64位系统下进行的: qleelulu@nb:~$ uname -a Linux nb 3.2.0-25-generic #40-Ubuntu SMP Wed May 23 20:30:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux qleel...阅读全文

博文 2014-10-04 19:26:05 QLeelulu

golang 粗谈

golang是一门很独特的语言, 属于实战派系列. 最喜欢的两门语言python和golang. 现在感觉, go相比python , 有一些自己独特的特点, 前景巨大. (1)开发效率高. golang的开发效率市非常高的, 虽然属于静态语言. 但是编译速度, 开发速度都是非常快的. 当然, 我们不和python动态语言相比了. 这个得益于gotool, 这个非常强大的命令行工具. (2)语言成分相当干净, golang的关键字只有25个. 取消了大量的oop特性. 但是我们发现, 那些特性取消了, 我们照样能够实现一样非常强大的功能, 甚至更强大. 按照创始人的说法就是, 既然那些功能特性并没有带来非常明显的性能的提升, 我们就不用再背着这个包袱了, 所以golang是极简,实用的. 比...阅读全文

博文 2014-10-04 19:26:06 qiya2007

在Windows下为Go安装goprotobuf

步骤如下: 1. 安装Go for windows(测试版本v1.1.2),设置好GOPATH,GOROOT等环境变量 2. 安装protoc windows binary:直接下载protoc-2.5.0-win32.zip,解压protoc.exe到path所包含的目录即可 3. 拿到goprotobuf的source code: go get code.google.com/p/goprotobuf/{proto,protoc-gen-go} 以上是官网做法,一般在windows下还需要先搞定hg等等工具 其实也可以直接从https://code.google.com/p/goprotobuf/source/browse/ 下载,点击"download zip"即可 下载之后,需要手工...阅读全文

博文 2014-10-04 19:26:02 yhcharles

RSS 阅读器 QReader

QReader 是一款使用 Go 和 JavaScript 编写的阅读器,支持订阅 RSS 2.0 和 Atom 1.0 格式的 feed。 为了运行 QReader ,你需要有一台 server,它可以是你放在局域网中的 PC。你需要在 server 上运行 QReader 服务端程序,然后使用手机、平板电脑或 server 上的浏览器访问 QReader。当然,如果你有兴趣,可以尝试把 QReader 编译到 Android、iOS 设备或路由器中。 QReader 是一个单用户的阅读器,不适合多人共同使用。 ![QReader](http://static.oschina.net/uploads/img/201510/03192857_qoy8.jpg) QReader 包...阅读全文

开源项目 2015-10-03 00:00:00 m3ng9i

位运算计算(go语言)

符号 二进制表示 十进制表示 0110 6 1011 11 & 0010 (上下都是1的话才是1,否则是0) 前后顺序不管,类似加法:1+2=2+1 2 | 1111 (上下都是0的话才是0,否则是1) 前后顺序不管,类似加法:1+2=2+1 15 ^ 1101 (上下数字不一样的话才是1,一样的话是0)前后顺序不管,类似加法:1+2=2+1 13 &^ 0100 (下面的数字是1,则为0,下面的数字为0,则为上面的数字)前后顺序不同结果不同,类似减法:1-2不等于2-1 方法2:先将下面的1011取反为0100,将取反完的0100和上面0110进行&运算,也可得到0100 4 关于&^的计算 上面的数字是6,二进制表示为: 0 1 1 0 下面的数字是11,二进制表示为: 1 0 1 1 ...阅读全文

博文 2014-10-04 19:26:44 waynehu

go学习笔记-控制流

控制语句 条件语句 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句,花括号{}都是必须存在的; 左花括号{必须与if或者else处于同一行; 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔; 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中,否则会编译失败: func example(x int) int{ var result int if x == 0 { result = 5 } else { result = x } return result } 选择语句 switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough c...阅读全文

博文 2014-10-04 19:26:15 Bluven

golang json 包简单分析

首先上代码: func main() { b := true a1, _ := json.Marshal(b) a2, _ := Marshal(b) fmt.Println(string(a1)) fmt.Println(string(a2)) } 输出: true true 以最简单的单个bool 类型的序列化为例,我们来搞清楚json 包里面的调用栈如下: 从入口出发,第一个方法是: func Marshal(v interface{}) ([]byte, error) { e := &encodeState{} err := e.marshal(v) if err != nil { return nil, err } return e.Bytes(), nil } 这里没有什么特殊,...阅读全文

博文 2015-09-25 03:00:00 bnbqian

使用Go 语言的三个原因

导读 几个星期前,我一个朋友问我:“为什么要关心 Go 语言”? 因为他们知道我热衷于 Go 语言,但他们想知道为什么我认为其他人也应该关心。有三个原因:安全性、生产力和并发性。有些语言可以涵盖一个也有可能是两个方面,但是这三个方面的结合使得 Go 成为主流程序员的绝佳选择。 几个星期前,我一个朋友问我:“为什么要关心 Go 语言”? 因为他们知道我热衷于 Go 语言,但他们想知道为什么我认为其他人也应该关心。本文包含三个我认为 Go 是重要的编程语言的原因。 安全 个人而言,你和我或许完全有能力在 C 中编写程序,既不会泄漏内存,也不会不安全地重复使用内存。然而,整体上,即使有超过40 年的经验,用 C 的程序员也无法可靠地这样做。 尽管静态代码分析、valgrind、tsan 以及 “-...阅读全文

博文 2017-04-24 12:00:38 linuxprobe18

命令行 IP 查询工具 IP resolver

IP resolver 是一个使用 Go 语言开发的命令行 IP 查询工具。它可以通过多个 DNS 服务器解析一个域名的 IP 地址,并显示各个 DNS 服务器的查询结果,便于观察不同 DNS 服务器在A记录解析上的不同之处。 ![Screenshot of IP resolver](http://static.oschina.net/uploads/img/201510/03193640_zBDy.png) ## 创建可执行文件 IP resolver 依赖 _github.com/miekg/dns_ 包, 如果你没有安装此包,请使用下面的命令安装:

go get github.com/miekg/dns
然后使用下面的命令创建可执行文件:
g...阅读全文

开源项目 2015-10-03 00:00:00 m3ng9i