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

关于GOLANG的chan

GOLANG CHAN chan是golang中非常重要的一个东西,用来做goroutine的通信,因为golang程序必然会有多个goroutine,如何同步这些goroutine就很重要了。 使用chan时有几个心得: 首先,永远是符号<-进行读取或者写入,譬如v,ok := <-c是读取,而c <- v是写入。 其次,读取时,如果没有ok,也是可以读取的。不过如果closed也是能读的,没有赋值而已;如果要知道是否closed得加ok,也就是除非chan永远不关闭,否则读取应该用v,ok := <-c而不是用v := <-c的方式。 再次,不能向closed的chan写入,所以一般写入时需要用一个信号的chan(一般buffer为1),来判断是否写入或者放弃,用select判断是写入成...阅读全文

博文 2016-08-17 14:00:03 winlinvip

Go语言 time时间格式转换

最近做项目用到golang语言,遇到时间格式相互转换的问题,参考网上资料自己写了代码测试了下,能够成功转换,把代码贴出来以备后用,也供需要者查看。 // time_format.go package main import ( "fmt" "time" ) func main() { fmt.Println("Hello World!") //返回现在时间 tNow := time.Now() //时间转化为string,layout必须为 "2006-01-02 15:04:05" timeNow := tNow.Format("2006-01-02 15:04:05") fmt.Println("tNow(time format...阅读全文

博文 2015-06-17 23:00:50 qq_534019165

golang 处理Json 数组

今天遇到个接口需要处理一个json的map类型的数组,开始想法是用simple—json里的Array读取数组,然后遍历数组取出每个map,然后读取对应的值,在进行后续操作,貌似很简单的工作,却遇到了一个陷阱。 Json格式类似下边: {"code":0 ,"request_id": xxxx ,"code_msg":"" ,"body":[{ "device_id": "xxxx" ,"device_hid": "xxxx" }] , "count":0} 很快按上述想法写好了带码,但是以外发生了,编译不过,看一看代码逻辑没有问题,问题出在哪里呢? 原来是interface{} Array方法返回的是一个interface{}类型的,我们都在golang里interface是一个万能的接受...阅读全文

博文 2014-10-04 19:26:13 u010471121

go 通过nginx代理后获取用户ip

go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.RemoteAddr) } 另外,在net包中也有 func (c *IPConn) RemoteAddr() Addr 以上是获取用户的ip,是与用户直连的ip,如果走代理,会是代理的ip 如果通过nginx代理,上边方法获得的是nginx的服务器的ip,所以这里要设置nginx代理 proxy_set_header Remote_addr $remote_addr; nginx会 转发ip到go的服务器,在通过go获取header中的romote_adder 获取用户的ip func ip(w ...阅读全文

博文 2014-10-04 19:26:28 zggsdy

基于vim的golang开发环境配置

我用的操作系统为ubuntu14.04 用惯了命令行下裸的vim,有些厌倦,尝试着去emacs里打了个滚,各种快捷键让我觉得惨不忍睹。回到vim感觉像是回到了天堂,想想又不是只有emacs才有图形界面,虽然我已经弃用gvim很久,不代表它不存在。故而转投gvim的怀抱。 而最近正好开始学golang,尝试着写些小程序,却发现vim对golang的原生支持实在是糟糕,于是重新走上了配置vim的不归路…… 插件: pathogen 我使用pathogen来管理所有的插件,这是因为它比vundle简单……在vim当中安装东西的手感不如一句简单的git clone来的好。 安装: https://github.com/tpope/vim-pathogen,按照说明完成安装即可 它的用法很简单,便是把...阅读全文

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

golang -- 网络字节编解码(2)

以下是利用标准库binary来进行编解码 解码 ①使用bytes.NewReader/bytes.Buffer来存储要解码的ascii串 ②使用binary.Read来解码 package main import ( "bytes" "encoding/binary" "fmt" ) func main() { var pi float64 bpi := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40} buf := bytes.NewReader(bpi) err := binary.Read(buf, binary.LittleEndian, &pi) // 这里可以继续读出来存在变量里, 这样就可以解码出来很多, 读的次序和变...阅读全文

博文 2014-10-04 19:27:04 flyking

HBase Go客户端Row构造注意事项

1. Hbase 的Go客户端语言使用方法 2. Hbase的Row使用注意事项 2.1. Row的前几个字段尽量散列 2.2. Row的排序是把所有Row中的字符做字典排序 我们最近在一个项目中使用Hbase做日志数据的存储,在其之上做一些数据分析工作,相对java来说,团队成员对Go的使用更熟练,所以自然使用Go作为Client的开发语言, 以前从来没有跟Hbase打过交道,本来一个比较简单的任务,愣是磕磕绊绊做了好久。。。 本文只说说Hbase的Row构造时的注意事项 1 Hbase 的Go客户端语言使用方法 Hbase官方没有Go的客户端,但是它提供了thrift服务,我们可以用Go语言开发一个thrift 的client,通过向hbase的thrift server发送RPC请求,...阅读全文

博文 2015-02-10 03:00:01 cobbliu

使用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

golang笔记:unsupported driver -> Scan pair: -> *string

golang里,操作mysql数据库,使用查询语句的时候,一般的写法 rows, err := db.Query("SELECT name from table) if err != nil { return } for rows.Next() { var name string err = rows.Scan(&name) if err != nil { return } } 当查出来的字段有NULL的时候,就会报这样的错误unsupported driver -> Scan pair: -> *string 这又是由于Go语言对数据类型的严格限制。name的类型是string,所以只能接受string类型的值,而此处nil是为空的指针类型。最佳解决办法是——插入记录的时候不要...阅读全文

golang 判断是否实现interface接口的方法

由于golang的interface使用很灵活,不需要显示的实现接口interface的方法, 有点动态化的感觉, 缺点:如果没有实现interface的方法,强行转换成interface,运行时候异常报错 解决办法:在编译的时候就把这种错误抛出来,上代码: package main import ( "fmt" ) type value interface { Show() } type test_value struct{} // func (value *test_value) Show() { fmt.Printf("test \n") } var _ value = new(test_value) // 使用类似方法处理,编译的时候会报错 func main() { } // --...阅读全文

博文 2017-01-22 10:00:08 golang_yh

一些不常见的Go命令参数详解

你是刚开始使用Go工具么?或者你想扩展知识?这篇文章将会描述每个人都需要知道的Go工具参数。免责声明:这篇文章可能会有些偏见。这篇文章描述了我个人会用到的Go工具参数,还有一些是我周围的人遇到的问题。如果你还有别的想法,在Twitter联系我。$ go build -x-x会列出来go build调用到的所有命令。如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具体参数,或者怀疑链接器有bug;使用-x来查看所有调用。$ go build -x WORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754 mkdir -p $WORK/hello/perf/_obj/ mkdi...阅读全文

博文 2016-10-11 02:00:00 abv123456789

go语言json操作

可使用go语言官方的package中的”encoding/json”来处理json数据,详细可以参考json包的示例。 还有一种更简单直接的方法,使用github.com/bitly/go-simplejson包,这个包封装了encoding/json里的Unmarshal和Marshal方法,提供更易用的接口。 地址:https://github.com/bitly/go-simplejson 文档:http://godoc.org/github.com/bitly/go-simplejson 具体用法可以参考包里的测试代码:simplejson_test.go,非常方便。 package main import ( "fmt" "github.com/bitly/go-simplejso...阅读全文

博文 2014-11-16 10:17:00 铁哥

Golang 计算目录中代码的行数

程序名字 countline os 包来获取运行参数 运行的时候要提供两个参数,一个是目录,一个是扩展名 如: countline . go 没有运行参数的就退出程序 if len(os.Args) != 3 { fmt.Println("countline [Dir] [extention]") return } 计算文件有多少个 ‘\n’ func countFileLine(name string) (count int64, err error) { fmt.Println("count file:", name) data, err := ioutil.ReadFile(name) if err != nil { return } count = 0 for i := 0; i <...阅读全文

博文 2015-06-17 20:00:58 juxuny

Golang绑定Lua脚本,小小封装一下

好吧,我承认我有点无聊! 原来的时候,自己用C写过一个小东东,里面集成了lua脚本,lua主要用于配置系统,感觉很不错。 最近折腾了一段时间的Golang,写代码的感觉,的确比C爽,所以想着用Golang写个爬小说的稍微通用的爬虫,基本功能搞定后,发现配置还是用lua比较方便,便试着封装一下lua c-api的bindings,整了半天,发现挺累的,就去github搜了下,发现了几位前辈写的东东,但是感觉都不太满意,最后终于通过golang官网找到了这个。 恩,github.com/aarzilli/golua,这个封装,相对完整。试用了一下,和C-API基本一致,问题是,从配置文件里面取个东东,依然和C-API一样,繁琐无比。哎,之后只能自己再封装一下算了。整了2小时,感觉不错,读取基本配...阅读全文

博文 2015-06-17 20:01:46 u013125772

Golang通过syscall调用win32的Api

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 Golang不是完全的跨平台, 并没有提供Windows下的相关方法,只能通过Syscall包去调用Win库。 开始 如果你不了解Windows下API调用,请观看MSDN文档,我知道有些人找不到,没关系: 1. 英文版: https://msdn.microsoft.com/en-us/library/windows/desktop/hh447209(v=vs.85) ...阅读全文

博文 2018-01-24 15:33:04 90design

关于常驻内存RES,pprof,heap,threadcreate的疑问

小弟写了个简单后台用来接收POST请求上传过来的文件,并保存到后台本地。在做测试的时候,每一次请求上传5个文件,5个文件大小总和大概在300-400k的范围,测试的时候模拟客户端并发1000个POST上传文件。后台处理完1000请求后 RES直接上到500MB,查看/debug/pprof/下的threadcreate也直接上到400多个,再并发第二次,第三次... 1000个POST请求,RES在600多MB就不再涨了,threadcreate涨到570以后,增长速度就放缓了,此后七八分钟不再有请求发送RES慢慢再回降到100MB左右,但是threadcreate一直没有降过。上个图吧 ##1.服务开启: ####RES: +![开启服务.jpg](http://studygolan...阅读全文

go语言中的反射的使用

今天尝试了一下使用go语言中的反射来将struct类型转换成xml,结果相当纠结。首先去看了一下go的reflect包的实现,根据go的规则,首先应该去看一个NewXXX的方法,结果发现了一个叫NewValue的方法,通过这个方法我们能够得到一个Value接口。另外我们还应该注意到,go的反映实现中将Type和Value分开了,于是还有另外一个接口Type. type Value interface { // Type returns the value's type. Type() Type // Interface returns the value as an interface{}. Interface() interface{} // CanSet returns whether ...阅读全文

博文 2014-10-04 19:26:40 javatgo

golang 实现带缓存的log package

又一周了,最近的生活,hhhe, 学习的过程真的是非常非常缓慢的,不过慢慢的,不急,不怕,不怂。 最近写某个东西,封装了一个数据库操作的包,可是有个大bug,暂时不贴出来,因为还没有解决。但是封装了这个log包,其实没写完整的,不过感觉还好,反正比即时log好。 顺便说说,这个操作做缓存,为什么?其实原因非常简单,这就用到操作系统的知识了。因为当我们执行写数据库,或者写日志到文件的时候,会发生io中断,io中断会让操作系统来处理这些中断,这时我们的程序执行时,就会从用户级切换到核心级,处理结束后再从核心级返回到用户级,这一个转换过程的代价是很大的,当频繁执行这样的操作,整个系统的性能会非常的差,这些都助攻于以前写遗传算法算皇后问题时,在遗传迭代的过程中有使用到 C++ 的cout ,于是8皇...阅读全文

博文 2016-03-28 04:00:01 Tangs_

golang复用http.request.body

问题及场景 业务当中有需要分发http.request.body的场景。比如微信回调消息只能指定一个地址,所以期望可以复制一份消息发给其他服务。由服务B和接收微信回调的服务A一起处理微信回调信息。 解决思路 最开始考虑的是直接转发http.request。使用ReverseProxy直接将http.request由服务A转发给服务B。但是微信涉及到验证等问题,完全调整好非常麻烦。所以转换思路,打算将http.request.body的内容直接post给服务B。 可是http.request是readcloser。我们将http.request readAll的时候讲无法再次读取http.request里面的信息。 如何才能将http.request.body复制使用呢? 其中c表示的是htt...阅读全文

博文 2018-10-20 18:34:42 ppmoon

Golang中的interface,一看就明白

Golang中的interface,一看就明白 先说说接口,接口我理解为一些行为的集合。似乎还是很懵x。来看看代码和允许效果,再说。 package main import "fmt" type TypeCalculator interface { TypeCal() string } type Worker struct { Type int Name string } type Student struct { Name string } func (w Worker) TypeCal() string { if w.Type == 0 { return w.Name +"是蓝翔毕业的员工" } else { return w.Name+"不是蓝翔毕业的员工" } } func (s S...阅读全文

博文 2018-12-07 19:34:43 小小程序员Eric

20130428记录一下go-sqlite的小问题

基于beego写了一个简单的答题系统,用64位编译器编译好好的,可放到32位机器上运行的时候跑不起来,于是又得编程32位。 下了32位编译器后,把工程搬过去,重编译,谁知道提示一对错误,都是sqlite. # command-line-arguments D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text) : __divdi3: not defined D:\GOPATH\pkg\windows_386/github.com/mattn/go-sqlite3.a(sqlite3_windows.)(.text) : __moddi3: not defined D:\GOPATH\pk...阅读全文

博文 2014-10-13 00:00:03 fengbangyue

go调试的问题。

各位用的是什么工具调试go的?调试过程有没碰到一些蛋疼的问题 比如: 1.断点需要在debug之前就打才能生效 2.运行过程中断点去掉后还会断到。 3.单步调试会跳来跳去、(这个在调试beego的controler的时候比较容易碰到) 我用JetBrains的idea和Goglang、同事用的是vscode,都有碰到调试问题。 编译器用的是delve 试过几个版本的delve都没有相对完美的,有的断点可以在运行过程中打,但是简单逻辑的单步调试要很久4 5秒那种。 想问下各位用的什么调试工具和编译器,调试过程中有没有这些蛋疼的问题...阅读全文

2016女码农的初春

刚进入2016年的初春,望着帝都被雾霾染成灰色的天空,吸到嗓子里火辣辣的. ![1.jpg-12kB][1] --- 遭受着每日上班的交通换乘,堵车,公交跟地铁里的照片模式.真是让我悲愤! ![2.jpg-40.2kB][2] --- TMD干嘛非要回到这个让我不喜欢的城市,我狂躁,抑郁,压抑,感觉孤独与惆怅.想当初的追逐之心觉得都已经动摇,或者根本就是崩塌了. ![3.jpg-69.8kB][3] --- 父母也经常与我谈及这个问题,可能是怕我一个人在帝都太孤独,压力太大的原因,是不是怕我疯了,会给他们带来更大的负担呢.但是在家乡真的是没有适合我的公司与岗位,我也想回家乡和父母住在一起,哪怕环境在不好,那毕竟是我自己的家,有爱我的父母,有从小玩到大的朋友....阅读全文

golang中应该怎么使用socket?

问题 golang中没法多路复用,select只能支持channel的读写,不支持socket的读写。 所以问题是,怎么对socket高效的读和写? 分析 socket是可以并发读写 pkg/net文档: Multiple goroutines may invoke methods on a Conn simultaneously. 读取 为了避免发送快、接收和处理慢导致阻塞,需要有专门的协程负责从socket上read,尽快读取。 读出来之后建议直接通过channel发给业务协程处理,避免耗时。 如果排队等待业务接收,也可能比较慢,导致数据堆积。不建议。 写入 虽然可以多协程并发调用write,但是write可能只写入部分成功。 所以如果多协程并发write,可能导致消息交叉。 所以需要在...阅读全文

博文 2018-04-02 19:33:06 chuqingq

请问Go中的Channel可不可以在不写入数据的情况下判断是否可写?

小白求解。。。 类似的,还有在不执行读取动作的前提下能否判断一个channel是否可读? 我不想用select case因为那样一旦判断可写/读的话这个读写操作就事实上产生了。我需要等待两个channel同时可读的时候再将它们的值同时读出来。。...阅读全文

【阿里巴巴 - 系统软件事业部招聘】- 长期有效,可年后入职

语言:Java/Go, C/C++优秀者也非常欢迎 工作经验:3年+ BASE: 主要是杭州, 北京/上海/深圳/美国硅谷也有 这里贴出来两个链接,供有兴趣的同学围观一下: [系统软件事业部-混部调度架构师](http://alibaba.tupu360.com/social/position?pid=291142&pCode=PfkNYpL1OAZIBeAYsULIKA%3D%3D) [系统软件事业部-计算存储分离架构开发专家](http://alibaba.tupu360.com/social/position?pid=281919&pCode=oXMFqeSO3M2AAv624kMT8w%3D%3D) **简单来说:** 如果你对**分布式存储*...阅读全文

Golang让协程交替输出

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 之前用Golang写过一篇关于下载的文章(https://my.oschina.net/90design/blog/1607131), 最后提到:如果新需求是同时下载,并且按循序下载,最近看到在论坛里有人又再问起,就想起来更新一下此问题。 开始 两个协程交替输出1-20 package main import "fmt" func main() { A := make(c...阅读全文

博文 2018-01-19 11:33:05 90design

golang连接mysql数据库实现增删改查

golang本身没有提供连接mysql的驱动,但是定义了标准接口供第三方开发驱动。这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/MySQL这个驱动,更新维护都比较好。下面演示下具体的使用,完整代码示例可以参考最后。 下载驱动 sudo go get github.com/go-sql-driver/mysql 如果提示这样的失败信息:cannot download, $GOPATH not set. For more details see: go help gopath,可以使用如下命令解决 sudo env GOPATH=/Users/chenjiebin/golang go get github.com/go-sq...阅读全文

博文 2015-06-17 20:02:23 hxd861030

学习记录:go语言中读写文件的小练习

package main import ( "os" "fmt" "bufio" "strings" "strconv" ) func main() { f, _:=os.OpenFile("a.txt", os.O_RDONLY, 0666) defer f.Close() m:=bufio.NewReader(f) char:=0 words:=0 lines:=0 for{ s, ok:=m.ReadString('\n') fmt.Println(s) char+=len(s) words+=len(strings.Fields(s)) lines++ if ok!=nil{ break } } fmt.Println("char:"+toString(char)+",words:"...阅读全文

博文 2014-10-04 19:26:30 明述道长

Golang RSA算法与 java(android)的互通

注:这里的java代码跑在android,最后的结果,本人看上去是一致的 互通要达到的要求 RSA加密位数:统一采用RSA 1024 分组加密条件:RSA/ECB/PKCS1Padding 以上条件java 与 go均要满足,还有一点要注意,虽然java默认使用的是:RSA/ECB/PKCS1Padding。但安卓不是,所以安卓平台默认使用的RSA填充要自己指定。go 只要解密,java只要加密。私钥与公钥各平台只有一种。加密结果转成base64。 java 代码: /** *利用Go语言产生的公钥加密 * @param pubkey_from_go 从服务器(go语言实现)获取的公钥 * @param plainText 需要加密的字符串 */ public static String e...阅读全文

博文 2017-04-19 08:55:38 送你一碗大麦茶

悲催啦,居然喜欢上Golang

这2天试了试Google的Golang,很有感触,太像C啦,太好用啦~~~~~~~~~~ 居然一下子就喜欢上了,悲催的是,竟然不允许在生产环境上使用(为了确保系统的稳定性),只能拿来游戏游戏一番。爱又得不到,痛苦,更痛苦的是“爱人”天天在眼前晃来晃去的,扰人心神~~~~~~~~~ 就用此博客来做个学习笔记吧~~~~~~~~~~~~~ 防止Go官方网站被X:173.194.79.141 golang.org,你懂的...阅读全文

博文 2014-10-19 09:00:02 dandan.fs

VSCode 下无法自动列出自定义package中的成员

我自定义写了个xmlConfig 的包,然后在main的包里引用它,编译,运行都很正常。但是xmlConfig的成员不能自动列出来,就是敲 "xmlConfig." 之后,VsCode不给提示,请教大家这如何解决? 我已经按章了VsCode的Go扩展,并且安装好了以下: go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v github.com/golang/lint/golint go get -u -v github.com/lukehoban/go-outline go get -u -v sourcegraph.com/sqs/goreturns...阅读全文

Go 语言中手动内存管理

Go 语言是自带GC的, 相对C语言等的手动内存管理省事很多, 弊端便是会消耗更多的内存, 以及在GC时导致整个程序的停顿. 在某些特殊场合, 如果能够可选地手动进行内存管理, 效果会好不少. Go 目前的 GC 实现比较简单(mark-sweep算法), 进程的内存使用量取决于两次GC操作直接的内存申请量(不能重复使用), 而且通常GC发生在函数调用的深处, 大量对象无法立即释放. 另外, 目前Go对内存的使用是贪婪的, 一旦向系统申请了就不再释放, 进一步增大了内存消耗(但不是泄露). 整体看来, 对某些有大量临时内存的应用, 内存消耗量可能会是同样功能的C程序10倍, 甚至更多. Beansdb 的 Proxy 是用 Go 实现的, 其中一个部署图片和歌曲的实例也面临了这个问题, 运行...阅读全文

博文 2017-04-19 00:00:19 1071954237

golang连接mysql操作示例增删改查

http://www.01happy.com/golang-mysql-demo/ 下载驱动 sudo go get github.com/go-sql-driver/mysql 如果提示这样的失败信息:cannot download, $GOPATH not set. For more details see: go help gopath,可以使用如下命令解决 sudo env GOPATH=/Users/chenjiebin/golang go get github.com/go-sql-driver/mysql GOPATH的值根据自行环境进行替换。 创建测试表 在mysql test库中创建测试表 CREATE TABLE IF NOT EXISTS `test`.`user` (...阅读全文

博文 2016-07-11 12:00:02 liukuan73

Go-Interface

要点 interface关键字用来定义一个接口 Go没有implements、extends等关键字 实现一个接口的方法就是直接定义接口中的方法 要实现多态,就要用指针或&object语法 示例 package main import "fmt" import "math" type Shape interface { area() float64 } type Circle struct { r float64 } func (c *Circle) area() float64 { return math.Pi * c.r * c.r } type Rectangle struct { length, width float64 } func (r *Rectangle) area() f...阅读全文

博文 2016-09-01 16:00:02 u013344915

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-07-07 22:00:06 kamendula

C++,Python,Golang对照学习-01

好吧其实学Go只是为了好玩,只是为了好玩,学习过程中不免会把其他我懂的语言的思维定势和习惯带进来,由此有了这篇对照学习的记录,就当是留下学习的脚印吧. 这里所提及的语言特性在C++指最新的C++11标准,Python指Python3.x(2.x没学),Go是最新的1.1 变量声明 Go中变量声明的时候顺序是 变量名 -> 变量类型,并且可以忽略变量类型又结果进行推断如 a := 5 这个时候a就是int类型 C++中变量声明的顺序是 变量类型 -> 变量名. 可以通过auto关键字推断出变量类型 如 auto a = 5; 这个时候a是int Python中所有变量的声明都是不需要用关键字指定变量类型的 defer 在Go中defer关键字用于延迟一个函数或者方法的执行,它会在外围函数或者方...阅读全文

博文 2015-06-17 20:18:50 wzg_j

[GOLANG]获取远程POST来的XML数据(微信公众平台)

今天测试用GO语言链接微信公众平台,一切都很顺利,但是发来的XML数据一直收不到。 将所有有可能的函数和值都测试过了,例如Request.Form,Request.PostForm,Request.MultiPartForm等都没有…… 最后发现它竟然藏在Request.Body里面,包的解释不完善害死人。 Request.Body里的数据是io数据,用ioutil.ReadAll方法可以将数据读出来。 读出来后用string方法转换一下,再用相应的解析函数解析成XML类就可以了。 记录下来留念一下...阅读全文

博文 2017-02-09 16:48:38 葱烧烙饼

golang中往channel写入数据的时候,能不能指定从头部写入还是从尾部写入?

RT,业务场景需要,从channel读出数据后,如果处理失败,需要把数据再丢入channel,再处理。但是因为数据有一定的顺序(不能把失败的数据写到channel的尾部),所以我再把失败的数据丢入channel准备重试的时候,需要丢到channel的头部,然后再读出来进行重...阅读全文

来来来,都来说说面试时遇见过的最奇葩的事情

这是知乎上写的一段经历 说是一个学日语的朋友,在深圳的某人才市场找工作,看了看职位要求后投了份简历,对方人资的看了眼简历,摇摇头说:不好意思,我们要求日语二级以上的。 朋友瞬间懵逼,因为他是日语一级。(日语一级是日语能力考中最高级别……) 大家完全可以把这个当成一个段子听。我们关注下故事背后的问题,反馈出的就是和不懂行的人聊天,真的是一个非常郁闷的经历...阅读全文

Go洒给我一地的感觉

为看并行编程发到何样程度,21秒初识Go语言,聊记第一感觉。 语法乱,让我糊涂,甚于Perl,纳闷Go设计的第一宗旨是怎样达到的,自然编译器总感觉语言很清晰。 初看一下还挺有Pascal的味道的,那Professor W似乎又出现在面前。然而读到 var a int = 1 这种句式时,+_+了,美感全无,有点像把定语后置、宾语前置或独立主格结构都搅和在日语倒装里头。 沿袭把可选包变成内置标准一部分的模式,如C年代的lib,然后C++中STL更时髦,而Java功能就是一堆import堆起来的,CPAN让Perl易用……诚然,辅助包让语言变得有生命力。而Go就是从语法上内置了包,啥MPI啊、信号啊,贡献之处就在于简洁了,功劳不亚于C#里的lamda(话说lamda也不通俗易懂,继承了C#的风范...阅读全文

博文 2016-05-08 23:00:02 stoneandice

golang导出csv

项目中涉及到导出到csv的功能,在网上找了一圈,有个UTF82GBK的方式,这个后来发现有bug,涉及到复杂中文,显示出来的有问题,而且导出来的csv不是utf-8格式,不能用文本编辑器打开.最终确定一个方案,也比较简单,既解决了csv用excel打开,中文乱码问题,也能用编辑器打开,还能默认显示带逗号的字符串.废话不多说,直接上代码. package main import ( "encoding/csv" "log" "os" ) func main() { filename := "/Users/icsoc/Downloads/test.csv" columns := [][]string{{"姓名", "电话", "公司", "职位", "加入时间"}, {"1", "2", "刘犇...阅读全文

博文 2019-03-22 11:34:41 林子老公

Go-Interface

要点 interface关键字用来定义一个接口 Go没有implements、extends等关键字 实现一个接口的方法就是直接定义接口中的方法 要实现多态,就要用指针或&object语法 示例 package main import "fmt" import "math" type Shape interface { area() float64 } type Circle struct { r float64 } func (c *Circle) area() float64 { return math.Pi * c.r * c.r } type Rectangle struct { length, width float64 } func (r *Rectangle) area() f...阅读全文

博文 2016-09-07 04:00:04 u013344915

SQL数据库为BIGINT时,插入数据库出错type: unsupported type big.Int

rows,err := app.PLADB.Query("SELECT TOP 1 convert(bigint,ID) AS [FSourceInterID] FROM History") if err != nil { return } defer rows.Close() var s interface{} for rows.Next() { err = rows.Scan(&s) if err != nil { panic(err) } fmt.Printf("x is of type %T\n", s) fmt.Println(s) } log.Println(app.PLADB.Query("inse...阅读全文