包含标签 Golang 的文章

Golang httputil 库,一行代码搞定 http 请求

概览 在 golang 程序中进行 http 请求时,一般的步骤是: 组合 url 和 param 参数 get 和 put 需要准备请求体数据 进行 http 请求(设置超时) 错误判断和状态码判断 http 返回内容解析 如果后端程序每个 http 请求都如上面这样处理,将产生很多相似的代码, 并且在复制代码的时候,容易出错(需要修改的地方忘记修改),浪费 debug 的时间。 于是,我封装了一个简便的 httputil 库,……

阅读全文

Golang 八进制 utf-8 编码转中文

概览 当调试程序,打印出变量的值时,有可能输出的是八进制 utf-8 编码(尤其是 protobuf 变量) 例如:\346\200\241\346\200\241\346\200 这样的字符串如果作为字面量,go 可以自动转化, 但如果是从文件或 string 中读取,就不行了。 可以使用正则表达式简单处理下 代码示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18……

阅读全文

Golang IP 地址字符串整数/string int 相互转换

概览 Go 中没有 C 语言 inet_aton 和 inet_ntoa 类似的转换 IP 函数, 所以需要手动封装两个函数 (转换的方法有多种,我选择了简洁的) 实现 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 package main import ( "fmt" "math/big" "net" ) func InetNtoA(ip int64) string { return fmt.Sprintf("%d.%d.%d.%d", byte(ip>>24), byte(ip>>16), byte(ip>>8), byte(ip)) } func InetAtoN(ip string) int64 { ret := big.NewInt(0) ret.SetBytes(net.ParseIP(ip).To4()) return ret.Int64() } func main() { ip := "192.168.78.123" ipInt := InetAtoN(ip) fmt.Printf("convert string ip [%s] to int: %d\n", ip, ipInt) fmt.Printf("convert int ip [%d] to string: %s\n", ipInt, InetNtoA(ipInt)) } 注:InetAtoN 最……

阅读全文

Go 循环跳转语句使用标签的作用之一

Go 中的 for 循环可以使用 continue, break 进行控制,同时也可以标签 下面看一下使用标签的一个好处 示例:Go 求 N 以内的素数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package main import ( "fmt" ) func main() { printPrime(10) } func printPrime(maxNum int) { next: for outer := 2; outer < maxNum; outer++ { for inner := 2; inner < outer; inner++ { if outer%inner == 0 { continue next } } fmt.Printf("%d\n", outer) } fmt.Println("Completed") } 再看一下用C语言实现的(C 的 continue, break 不支持标签) 1 2 3 4 5 6 7 8……

阅读全文

最近文章

分类

标签

其它