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

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2015-01-16 18:00:01 ghj1976

golang的net包

package net import "net" net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。 虽然本包提供了对网络原语的访问,大部分使用者只需要Dial、Listen和Accept函数提供的基本接口;以及相关的Conn和Listener接口。crypto/tls包提供了相同的接口和类似的Dial和Listen函数。 Dial函数和服务端建立连接: conn, err := net.Dial("tcp", "google.com:80") if err != nil { // handle error } fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n") status, err := bufio.Ne...阅读全文

博文 2014-10-04 19:26:40 刘地

初探 Go 的编译命令执行过程

引言 Go 语言这两年在语言排行榜上的上升势头非常猛,Go 语言虽然是静态编译型语言,但是它却拥有脚本化的语法,支持多种编程范式(函数式和面向对象)。Go 语言最最吸引人的地方可能是其原生支持并发编程(语言层面原生支持和通过第三方库支持是有很大区别的)。Go 语言的对网络通信、并发和并行编程的支持度极高,从而可以更好地利用大量的分布式和多核的计算机。开发者可以通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。 2017年7月 TIOBE 语言排行榜 Go 首次进入前十。今天就让我们来探究探究 Go 的编译命令执行过程。 一. 理解 G...阅读全文

博文 2017-08-07 00:05:09 一缕殇流化隐半边冰霜

Golang HTTP GET POST请求

package main import ( "fmt" "io/ioutil" "net/http" "os" "strings" ) func GET() { client := &http.Client{} reqest, err := http.NewRequest("GET", "http://www.baidu.com/", nil) //建立一个请求 if err != nil { fmt.Println("Fatal error ", err.Error()) os.Exit(0) } //Add 头协议 reqest.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;...阅读全文

博文 2015-05-19 04:00:00 dq4402935

【GO语言中文网】微信公众号 - 社群 - 知识星球 欢迎各位的加入!!!(我们会努力优化的更好)

公众号: ![二维码1.jpg](https://static.studygolang.com/190317/db32d1313726e0d4d72b3d50b308cc38.jpg) QQ群号: Go中文网内部交流群:214813254 Go内部实现与标准库:731990104 知识星球: ![知识星球二维码.jpg](https://static.studygolang.com/190318/bf407817027c2946d5569435c24e578e.jpg...阅读全文

博文 2019-03-18 19:37:15 ZUIHAO1997

golang文件下载

golang文件下载 func downloadFile(fileFullPath string, res *restful.Response) { file, err := os.Open(fileFullPath) if err != nil { res.WriteEntity(_dto.ErrorDto{Err: err}) return } defer file.Close() fileName := path.Base(fileFullPath) fileName = url.QueryEscape(fileName) // 防止中文乱码 res.AddHeader("Content-Type", "application/octet-stream") res.AddHeader(...阅读全文

博文 2016-11-18 08:00:03 yueguanyun

GoLang 字符串处理大全

package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "bar")) //false fmt.Println(strings.Contains("seafood", "")) //true fmt.Println(strings.Contains("", "")) //true 这里要特别注意 fm...阅读全文

博文 2015-06-17 20:04:07 gzw13999

云栖大会压轴好戏 阿里云发布视频云V5计划与系列新产品

9月25 - 27日,2019云栖大会如期召开。在大会最后一天下午,阿里云智能视频云分论坛为今年的云栖大会献上了一场精彩的压轴好戏。​视频云V5计划发布 使能生态合作伙伴会上,阿里云智能研究员金戈进行《视频云新“三网一云”,驱动行业应用创新》主题演讲,并发布视频云V5计划。金戈表示:阿里云将全面打造新“三网一云”的产业布局,基于领先的视频和网络技术、阿里云达摩院的AI技术与阿里巴巴商业场景实践三级先发优势,凭借视频云多年沉淀的直播网、点播网和音视频通信网三大视频技术的融合应用,和一系列围绕云端媒体资源全生命周期构建的云计算服务和AI算法引擎,锻造出一个智能、融合、高效、经济、稳定可靠的视频IT基础设施服务平台。​据悉,依托新“三网一云”技术底座,视频云V5计划将正式启动。其目的是构筑开放、协...阅读全文

理解Golang包导入

自:http://tonybai.com/2015/03/09/understanding-import-packages/ Golang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多。 Golang中包的定义和使用看起来十分简单: 通过package关键字定义包: package xxx 使用import关键字,导入要使用的标准库包或第三方依赖包。 import "a/b/c" import "fmt" c.Func1() fmt.Println("Hello, World") 很多Golang初学者看到上面代码,都会想当然的将imp...阅读全文

博文 2015-06-04 03:00:00 sevenyuan

protobuf与protoc-gen-go

## 什么是protobuf Protobuf(Protocol Buffer)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。(参考[链接](https://baike.baidu.com/item/protocol%20buffer/1664400?fr=aladdin)) ## 什么是protoc protoc是prot...阅读全文

博文 2018-03-25 00:30:32 chalvern

GO,Beego带公众号的个人博客

## 个人博客源码 > 包含最新评论,点击排行,档案统计,留言,评论,回复留言,回复评论,日志,主题颜色修改等等 > 演示站点 http://leechan.online ### 更新 v1.1.0 > 接下来的v1.1.0版本将支持绑定公众号 新功能: 1. 素材管理 1. 自定义菜单 2. 消息群发 3. 关键词回...阅读全文

开源项目 2019-12-27 20:09:18 Lee Chan

腾讯云短信的 SDKqcloudsms_go

使用Go语言开发的腾讯云短信的SDK,完成了目前腾讯云提供的所有功能。 此 SDK 为非官方版本,命名和结构上与官方版本有一些区别。 海外短信和国内短信使用同一接口,只需替换相应的国家码与手机号码,每次请求群发接口手机号码需全部为国内或者海外手机号码。 语音通知目前支持语音验证码以及语音通知功能。 短信  单发短信  指定模板单发短信  群发短信  群发模板短信  短信下发状态通知  短信回复  拉取短信状态  拉取单个手机短信状态 语音  发送语音验证码  发送语音通知  语音验证码状态通知  语音通知状态通知  语音通知按键通知  语音送达失败原因推送 模板  添加模板  修改模板  删除模板  模板状态查询 签名  添加签名  修改...阅读全文

golang中net包用法(二)--IP

IP地址(Internet Protocol Address,称为互联网协议地址,简写为IP Address),是一种给主机在Internet上进行编址的方式。 type IP //IP表示一个简单的IP地址,它是一个byte类型的slice,能够接受4字节(IPV4)或者16字节(IPV6)输入。注意,IP地址是IPv4地址还是IPv6地址是语义上的特性,而不取决于切片的长度:16字节的切片也可以是IPv4地址。 type IP []bytefunc IPv4(a, b, c, d byte) IP //ipv4返回一个ipv4地址格式(a.b.c.d)的地址,这是16-byte的 func ParseCIDR(s string) (IP, *IPNet, error) //ParseCI...阅读全文

博文 2015-06-18 17:06:14 chenbaoke

阿里云研究员金戈:视频云新“三网一云”,驱动行业应用创新

9月25-27日,全球数字经济风向标——杭州云栖大会隆重开幕。在第三天的智能视频云分论坛上,阿里云研究员金戈进行《视频云新“三网一云”,驱动行业应用创新》主题演讲,并首次对外发布视频云V5计划。​金戈表示,新“三网一云”是视频云基于飞天十年的技术沉淀和过去三年视频领域的深耕,将领先的视频和网络技术、阿里云达摩院的AI技术与阿里巴巴商业场景实践深度融合,锻造出的一个智能、融合、高效、经济、稳定可靠的视频IT基础设施服务平台。“三网”是指直播网、点播网和音视频通信网。在大视频领域,基于短延时、云导播、超高清、窄带高清转码、超分、弱网优化、智能降噪等创新技术的融合应用,让合作伙伴能够一站式获得灵活、易用、优异的音视频技术服务,快速实现场景化解决方案输出。“一云”是指围绕云端媒体资源汇聚、存储、制作...阅读全文

golang——rune使用详解

一、定义 经常在开源库中,能rune关键字,从golang源码中看出,它是int32的别名(-231~231-1),对于byte(-128~127),可表示的字符更多。 二、使用 由于rune可表示的范围更大,所以能处理一切字符,当然也包括中文字符。在平时计算中文字符,可用rune。 package main import ( "fmt" "unicode/utf8" ) func main() { var chinese = "我是中国人, I am Chinese" fmt.Println("chinese length", len(chinese)) fmt.Println("chinese word length", len([]rune(chinese))) fmt.Println...阅读全文

博文 2019-02-11 21:34:42 yushu1987

uint 与 int 的区别 (golang语言)

上面是图,下面是源码: package main import ( "fmt" _ "time" ) func main() { a := byte(255) //11111111 这是byte的极限, 因为 a := byte(256)//越界报错, 0~255正好256个数,不能再高了 b := uint8(255) //11111111 这是uint8的极限,因为 c := uint8(256)//越界报错,0~255正好256个数,不能再高了 c := int8(127) //01111111 这是int8的极限, 因为 b := int8(128)//越界报错, 0~127正好128个数,所以int8的极限只是256的一半 d := int8(a) //11111111 打印出来则...阅读全文

博文 2014-10-21 20:00:01 mokt2001

go文件操作函数

文件操作 golang的文件操作时在os包中的。 所以用的时候要import os包 包含以下的这些函数 func Create(name string) (file *File, err error) 直接通过纹面创建文件 func NewFile(fd uintptr, name string) *File func Open(name string) (file *File, err error) 以只读方式打开一个存在的文件,打开就可以读取了。 func OpenFile(name string, flag int, perm FileMode) (file *File, err error) ...阅读全文

如何用golang实现一个定时器任务队列

golang中定时器 golang中提供了2种定时器timer和ticker(如果JS很熟悉的话应该会很了解),分别是一次性定时器和重复任务定时器。 一般用法: func main() { input := make(chan interface{}) //producer - produce the messages go func() { for i := 0; i < 5; i++ { input <- i } input <- "hello, world" }() t1 := time.NewTimer(time.Second * 5) t2 := time.NewTimer(time.Second * 10) for { select { //consumer - consume ...阅读全文

博文 2018-05-23 01:33:04 o0无忧亦无怖

Go语言IDE GoLand激活最新版

本文所描述,只供研究使用,其他概不负责。 什么是Goland呢?GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系,这也是我选用Goland作为Go语言 IDE 的原因,因为同一个系列。 goland下载地址为 https://www.jetbrains.com/go/download/ Go语言的IDE有很多,比如VS Code,Vim,Elipse,liteide,sublime ,相对这些来说,我还是喜欢用goland,原因是熟悉、效率高。我不会为了追求高大上,使用类似vim这样的工具来编写 golang 的代码,因为效率,这也是goland优势。 对于IDE、工具、或者其他...阅读全文

博文 2018-10-13 12:34:38 飞雪无情

Python、Java、Scala、Go Package对照表

格式转换类 分类 Python Java Scala Go Excel xlwt/xlrd, XlsxWriter POI - - PDF PyPDF2 Apache FOP - - CSV csvkit, tablib - - - XML解析 BeautifulSoup/bs4 - - - JSON - jackson json4s, spray-json - 数据处理和计算类 分类 Python Java Scala Go 二维数据分析 pandas - Saddle - 网络分析 networkx JUNG - - 矩阵计算 numpy - Algebird, Breeze blas, gocomplex, go-fn 科学计算 scipy SCaVis - - 符号计算 sympy ...阅读全文

博文 2015-04-10 19:00:00 Worldguy

GO微信小程序登录和支付

本文仅适用于微信小程序登录、支付golang服务器实现,而通用golang支付实现(支付宝、微信)请看另一篇。[官方文档]一、微信开发文档[微信支付][微信小程序服务器SDK][微信小程序客户端API]二、微信管理后台业务微信公众号管理后台,申请小程序,申请后需要注意两点: #. APPID、APPSECRET用于登录获取openid、sessionkey,其中openid用于支付API #. 开发配置小程序服务器域名和端口(eg: https://supercline.com:8090) 微信公众号商户后台:商户号(MCHID)和API支付密钥(APIKEY)三、HTTPS证书HTTPS服务器配置文档自己手动生成非认证调试证书Generate private key (.key) # Ke...阅读全文

博文 2019-08-21 16:03:11 SuperCLine

分布式存储Weed-FS源码分析

基于源码版本号 0.67 , 【Weed-FS又名叫Seaweed-FS】。 Weed-FS 是一个非常优秀的由 golang 开发的分布式存储开源项目, 虽然在我刚开始关注的时候它在 github.com 上面只有 star 50+, 但是我觉得这个项目是一个几千 star 量级的优秀开源项目。 Weed-FS 的设计原理是基于 Facebook 的一篇图片存储系统的论文 Facebook-Haystack, 论文很长,但是其实原理就几句话,可以看看 Facebook图片存储系统Haystack , 我觉得Weed-FS是青出于蓝而胜于蓝。 Weed-FS 这个开源系统涵盖的面比较多, 很难在一篇文章里面说清楚, 只能尽可能清楚的说说主要的部分。 源码目录结构 核心模块 weed 入口目录...阅读全文

博文 2015-02-15 18:31:39 YanyiWu

使用go语言编写IOS和Android程序

go语言目前已可以用来开发android和ios手机app。相关资料: 1、IOS https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/golang-china/zEh_pdSLHDs 需要能访问google 源码:https://bitbucket.org/minux/goios 其它文档: https://medium.com/using-go-in-mobile-apps 2、Android 官方源码:https://github.com/golang/mobile 环境配置: http://studygolang.com/articles/2322 http://studygolang....阅读全文

博文 2015-05-19 03:00:11 baiyuxiong

Go中进行字符集转换

Go代码本身是UTF-8的,而且官方没有提供相关字符集的转换库。不过,目前已经有一些开源库支持字符集转换。 1. [iconv-go](https://github.com/djimenez/iconv-go),通过cgo封装了iconv库; 2. [qiniu iconv](https://github.com/qiniu/iconv),同样通过cgo封装iconv库; 3. [go-charset](http://code.google.com/p/go-charset/),支持UTF-8转换为其他字符集(非iconv库),同时也封装了iconv,提供更多字符集的转换; 4. [Mahonia—a character-set conversion library fo...阅读全文

go调用exe

//调用exe func callEXE1() { arg := []string{} cmd := exec.Command("test", arg...) //会向 cmd.Stdout和cmd.Stderr写入信息,其实cmd.Stdout==cmd.Stderr,具体可见源码 output, err := cmd.CombinedOutput() if err != nil { fmt.Println("Error:", err) return } fmt.Printf("callEXE2结果:\n%v\n\n%v\n\n%v", string(output), cmd.Stdout, cmd.Stderr) } func callEXE2() { arg := []string{}...阅读全文

博文 2014-10-04 19:26:36 陈好

go sync.once用法

欢迎关注go语言微信公众号 每日go语言 golang_everyday sync.once可以控制函数只能被调用一次。不能多次重复调用。示例代码: package main import ( "fmt" "sync" "time" ) func main() { o := &sync.Once{} go do(o) go do(o) time.Sleep(time.Second * 2) } func do(o *sync.Once) { fmt.Println("Start do") o.Do(func() { fmt.Println("Doing something...") }) fmt.Println("Do end") } 输出结果: Start do Doing somethi...阅读全文

博文 2015-05-19 03:00:11 baiyuxiong

Golang文件名命名规则

1、平台区分 文件名_平台。 例: file_windows.go, file_unix.go 可选为:windows, unix, posix, plan9, darwin, bsd, linux, freebsd, nacl, netbsd, openbsd, solaris, dragonfly, bsd, notbsd, android,stubs 2、测试单元 文件名_test.go或者 文件名_平台_test.go。 例: path_test.go, path_windows_test.go 3、版本区分(猜测) 文件名_版本号等。 例:trap_windows_1.4.go 4、CPU类型区分, 汇编用的多 文件名_(平台:可选)_CPU类型. 例:vdso_linux_amd...阅读全文

博文 2016-09-22 07:00:01 zyjying520

IE 11下载文件中文乱码解决(go/php)

IE 11下载文件的时候发现乱码. 网上查了下资料,了解了一下,主要是user-agent变了,不再是MSIE,面是rv:11.0这样,所以只要服务端判断出是IE 11,处理跟MSIE一样。 GO: func setDownloadFileName(w http.ResponseWriter, fileName, agent string) { if strings.Contains(agent, "MSIE") { fileName = url.QueryEscape(fileName) fileName = strings.Replace(fileName, "+", "%20", -1) } if strings.Contains(agent, "rv:") && strings.Co...阅读全文

博文 2016-04-07 21:00:06 rariki

golang 防知乎 中文验证码 源码

创,转载请注明出处! 最开始用图形来模仿文字进行各种角度的倒立和排列,后来切换为文字后,有很多问题。总结如下: 1、程序在画图形和画文字方面不一样,图形的是从原点开始(0,0),而文字则从文字的基线开始(0,baseline) 2、在增加角度偏移时,文字或图形的高宽会产生变化(偏∠45度时达到最大),这时候为了让它们顶点对齐,需要计算偏移量(用三角函数) 3、在绘图时,会先旋转“画布”(描述可能不准确),再绘制文字。此时要往回旋转,否则下一个图形会顺着这个角度继续画。 4、为了让图形保持固定宽度,对于有偏角的文字,需要平均缩小左右间距(否则不同的角度,固定的文字个数,会让图形宽度不同) 效果图: 源码:(代码还可以再整理和优化,但限于计划时间,懒得弄了) package main impor...阅读全文

博文 2018-07-16 15:30:00 Denny_Yang

golang获取调用者的方法名及所在源码行数

package main import "runtime" import "log" func main() { test() } func test() { test2() } func test2(){ pc,file,line,ok := runtime.Caller(2) log.Println(pc) log.Println(file) log.Println(line) log.Println(ok) f := runtime.FuncForPC(pc) log.Println(f.Name()) pc,file,line,ok = runtime.Caller(0) log.Println(pc) log.Println(file) log.Println(line) log....阅读全文

博文 2015-02-04 03:00:00 wangxusummer

golang之交叉编译设置

俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcCGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 终端党 到工程目录直接执行 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build liteIde党 编译cross-linux64的配置文件,大概和这样差不多 # cross-compiler linux amd64 GOROOT=$HOME/golang/go GOBIN= GOPATH=$HOME/golang/3rdLibs:$HOME/golang/myLibs:$...阅读全文

博文 2014-10-04 19:26:01 ziyouchutuwenwu

golang实现中文汉字转拼音

载请注明出处: golang实现中文汉字转拼音 Golang 介绍 在一些的开发中,可能会遇到一些需要把中文汉字转成拼音的需求,在这里自己简单的用 golang 实现了一下中文转拼音的库。欢迎各位大佬前来指正。 2. 实现原理 实现起来的话,也非常简单,是将所有的汉字对应的 rune码,对应上它的拼音,也即是,有一个这样的 map[rune]string, 其中 key 为汉字的 rune码,value 就是汉字的拼音了。这个 map 是通过文件来生成的。文件内容如下: 3400=>qiū 3401=>tiàn 3404=>kuà 3405=>wǔ 3406=>yǐn 340C=>yí 3416=>xié 341C=>chóu 其中的拼音都是带声调的。不需要声调的话,可以替换成没有声调的字符...阅读全文

博文 2019-04-26 19:34:43 ChainZhang

Serverless架构详解:开发者如何专注于业务代码本身?

**本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 ** 演讲嘉宾:黄文俊,曾负责企业级存储、企业级容器平台等产品的架构与开发,目前主要负责SCF腾讯无服务器云函数产品相关。对容器平台、微服务架构、无服务器架构以及DevOps等多种热门技术领域均有涉猎。 大家好,自我介绍一下,目前我是腾讯云无服务器云函数产品负责人。我做了很多年后端开发。今天是从一个程序员角度讲解一下我们怎么样用Serverless架构。 我将本次讲解分为几块:第一,Serverless架构介绍;第二,对云函数产品介绍;第三,Serverless使用场景。 讲Serverless架构之前我们可以来看一下整个云的发展过程,在没有云之前大家可能都是用的物理服务器,早期时候大家都用的物理机托管方...阅读全文

博文 2018-08-30 12:35:03 腾讯云加社区

golang中json.Number妙用

最近跟某斯调试一个API接口,接口返回数据是json格式 ,按文档描述是一个整型数据,于是定义如下 type Data struct { Api int `json:"api"` } 在入参相同的情况下,第一次调用,得到的结果是: {"api":1} 然而第二次调用,得到结果却是: {"api":"1"} 与对方开发人员沟通后发现这是一个bug,由于流程问题,没办法立即修改上线,想想还是我做兼容比较好,效果是既能解析于{"api":1},也能够解析{"api":"1"},于是我想到了json.Number,Number类型定义如下 The representation of numbers is similar to that used in most programming languag...阅读全文

博文 2018-07-17 23:34:46 wu_sphinx

Golang Gin实践 连载十五 生成二维码、合并海报

Golang Gin实践 连载十五 生成二维码、合并海报 原文地址:Golang Gin实践 连载十五 生成二维码、合并海报项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star ???? 前言 在本章节,将实现如下功能细项: 1、生成二维码 2、合并海报(背景图 + 二维码) 实现 首先,你需要在 App 配置项中增加二维码及其海报的存储路径,我们约定配置项名称为 QrCodeSavePath,值为 qrcode/ 经过多节连载的你应该能够完成,若有不懂可参照 go-gin-example 生成二维码 安装 $ go get -u github.com/boombuler/barcode 工具包 考虑生成二维码这一动作贴合工具包的定...阅读全文

博文 2018-07-05 08:34:46 煎鱼

Golang redigo hmset hset 问题

最近公司项目,换到了golang 下面来开发,遇到了redis存储链表的问题,困扰了我好几天,后面静下心来,好好读了一下源码,发现官方的例子,最终还是羊毛出在羊身上 c, err := dial() if err != nil { panic(err) } defer c.Close() var p1, p2 struct { Title string `redis:"title"` Author string `redis:"author"` Body string `redis:"body"` } p1.Title = "Example" p1.Author = "Gary" p1.Body = "Hello" if _, err := c.Do("HMSET", redis.Args{...阅读全文

博文 2015-05-13 03:00:05 jackluo

golang截取中文字符串

1.问题: 在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现的问题是:由于中文一个字不只是由一个字节组成,所以直接通过切片可能会把一个中文字的编码截成两半,结果导致最后一个字符是乱码。 例如: 想要截取前四个字 name := "我是胡八一" fmt.Println("name[:4] = ",name[:4]) 执行后得到的结果会是这样的: name[:4] = 我? 2.解决方法: 先将其转为[]rune,再截取后,转会string nameRune := []rune(name) fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4])) 运行结果: string(nameRune[:4...阅读全文

博文 2016-04-09 17:00:06 vrinux

goalng导出excel(csv格式)

最近项目中有个小需求,需要将查询结果导出到excel。之间前java比较容易,使用POI很容易就能实现,查了下golang的文档,发现golang下边并没有导出excel的包,但是却有一个encoding/csv的包,看了下发现可以导出csv文件,大家都知道csv文件其实就是文本格式的excel文件,可以直接通过excel打开或是导入excel。 看起来挺好的,问题如愿解决,但是事实证明对已一个还不成熟的语言或是库最好还是先测一下的好。兴冲冲的卸了测试例子,成功导出了一个text.csv文件,一切看起来都挺好的,然而打开之后就傻眼了:中文乱码,这个问题其实比较好理解,golang只支持utf-8,而win中文版默认字符集是GB2312(gbk),这样看来直接转码就行了呗。 由于之前吃了亏,这...阅读全文

博文 2014-10-04 19:26:22 good-temper

golang 生成图表

golang 支持生产图片的源码在下面地址可以看到: https://github.com/vdobler/chart 这个项目 的 example 目录下编译后,执行下面命令就可以生产所有它支持的图表。 example/example –All 这些生产的图表效果如下: bestof.png xautoscale.png xbar1.png xbar2.png xbar3.png xbox1.png xgraphics.png xhist.png xkey.png xlog1.png xmleten.png xpie1.png xpie2.png xscatter2.png xscatter3.png xstrip1.pn...阅读全文

博文 2015-03-27 09:46:00 ghj1976

golang的time.Format的坑

golang的time.Format设计的和其他语言都不一样, 其他语言总是使用一些格式化字符进行标示, 而golang呢, 查了网上一些坑例子 自己查了下golang的源码, 发现以下代码 // String returns the time formatted using the format string // "2006-01-02 15:04:05.999999999 -0700 MST" func (t Time) String() string { return t.Format("2006-01-02 15:04:05.999999999 -0700 MST") } 尝试将2006-01-02 15:04:05写入到自己的例子中 func nowTime() string {...阅读全文

博文 2015-03-30 10:00:16 sunicdavy

golang源码解读之map

golang的map实现并不是像c++一样使用红黑树,而是使用了hashmap,用数组来实现。 详细的实现后续补充,这里先做个备忘。 在iterate整个map的时候,使用delete是安全的。这跟c++是不一样的,c++在delete的时候,会导致整棵树发生变化,所以不能在迭代的时候删除元素。 那为什么golang的map是安全的呢,从源码来看,golang的map使用了桶的概念,元素是被hash到桶存储,每个桶预设是存储八个kv,而且在头部有一个uint8 tophash[8]的结构,存储每个key的高八位(即hash(key) » (64 - 8)),如果该位置未被放置元素,则有一个特殊的标志Empty。在插入删除的时候,首先会比较该uint8跟hash(key)是否相等。当然,桶还利...阅读全文

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

http的文件服务器 gohttp

gohttp是一个http的文件服务器,因为是用go语言写的,所以加了一个go的抬头。之所以用go是因为发布起来是一个二进制文件,不同的平台都可以用,而且没有依赖问题,且稳定性也很好。     这个软件从很久以前就开始写了,第一次提交实在2015年的2月11号,作为组内存放公共文件的一个小软件。一开始的功能只有像 python -mSimpleHTTPServer 那种简单的功能。但是当我看到[gotty](https://github.com/yudai/gotty)这个软件的时候 ,意思到一个简单的软件竟然可以做到如此出色。之后这个http文件服务器就不断的被优化着,保持着简单易用的同时,开始赋予了它最强大的功能。     这个软件有很多的技术,隐藏在了其简易朴实的外表之下。请容...阅读全文

使用Go语言计算网络IP地址的CIDR

使用了Java、C#等许多语言好多年了,一直没怎么用过这些语言中的位移运算符,最近为了实现了一个小功能,才体会到这几个运算符的用途。在介绍如何用GO语言计算CIDR地址段之前,先介绍一下什么是网络地址的CIDR。 CIDR全称Classless Inter-Domain Routing(无类域间路由),相比CIDR,现在全球的IPV4地址(通过32位比特位表示)早在上世纪80年代就被划分成了A、B、C、D、E五大类地址,其中A类地址的比特位以0开头,B类地址以10打头,C类地址以110打头,D类地址以1110打头,E类地址以1111打头。其中D类地址主要用于路由组播,E类地址暂时保留。每一类地址剩余的比特部分又被划分为网络和主机两部分,具体划分请见下图: 每一类IP地址具体范围如下图所示,其...阅读全文

博文 2015-06-17 23:01:28 duhf_think