golang 可以用于windows编程吗

 go  golang 可以用于windows编程吗已关闭评论
2月 052017
 

golang 可以用于windows编程吗?

理论上可以,但是又有哪个IDE去支持golang进行windows编程并且能和visual studio相媲美呢?

每种语言都有他自己的用武之地,没有哪个语言可以独步天下,称霸武林的。

 Posted by at 上午 12:25

让go get 支持gitlab

 go  让go get 支持gitlab已关闭评论
4月 202016
 

参考文章: https://baokun.li/archives/go-get-proxy/

在你的nginx中添加配置:

注意:修改你自己的域名

另:

  1. 可能你自己的gitlab没有配置https,那么可以给go get 添加 -insecure 选项即可
  2. 可能你的gitlab仓库需要输入用户名和密码,那么你可以改成public的就好了

 

 Posted by at 下午 1:10

golang debugger 之 delve

 go  golang debugger 之 delve已关闭评论
2月 172016
 

Delve is a debugger for the Go programming language. The goal of the project is to provide a simple, full featured debugging tool for Go. Delve should be easy to invoke and easy to use. Chances are if you’re using a debugger, most likely things aren’t going your way. With that in mind, Delve should stay out of your way as much as possible.

地址: https://github.com/derekparker/delve

 Posted by at 上午 11:24

Golang call C

 go  Golang call C已关闭评论
11月 132015
 

题记:是否输出居然和是否和行尾换行有关系

代码:

why? …

因为printf是行缓冲的,不看到换行就不输出,可以在printf后面刷新标准输出:

另,在C的printf后面使用Go的fmt.Println(“^_^”)来输出一些东西,是不是就可以把C要打印的东西给输出来了呢?

代码如下:

结果发现,End 输出了,Hello world还是没输出。

原因:C的输出buffer和Go的不是一个

思考:

亲,你见过用C写的一个Hello world程序是必须有换行的吗?如下:

呃,这个确实没问题,why? C在退出的时候刷新输出缓冲了呗

说明:

To access a symbol originating from the C side, use the package name C. That is, if you want to call the C function printf() from Go code, you write C.printf(). Since variable argument methods like printf aren’t supported yet (issue 975)

翻译:如果你想调用C中的printf,那就是 C.printf(). 但是,向pringf这种可变参数个数的函数穿残还没有被支持,所以还不能直接写C.printf(). 只好自己包一下了

 

 Posted by at 下午 3:01

为Google-cloud-sdk设置http代理

 go, 默认分类  为Google-cloud-sdk设置http代理已关闭评论
2月 022015
 

 缘起

在使用google的hg和Google-cloud-sdk时都会遇到需要设置http代理的问题;

方式1: export http_proxy=10.xx.xx.xx:8888      // 无效

方式2: export http_proxy=http://10.xx.xx.xx:8888     // 无效

方式3: export https_proxy=http://10.xx.xx.xx:8888   // 无效

为什么?

分析

通过下面对使用的python的httplib2的代码分析发现:

  1.  http_proxy 或https_proxy  大小写不敏感,也可以写作: HTTP_PROXY   HTTPS_PROXY  (当然,别大小写同时存在)
  2. 代理的形式必须是url形式,如: http://host:port
  3. 对于http请求只参考 HTTP_PROXY , 对于 https 请求只参考 HTTPS_PROXY
  4. 可以通过 no_proxy (大小写不敏感)环境变量使得部分指定的域名不走代理,多个域名用“逗号”分隔,“*”代表所有

 

其他:

对于Go写的程序来讲,对于https请求来讲,优先参考 https_proxy,然后参考http_proxy; 参考: net/http/transport.go

所以,如果有类似错误如下:

Get https://code.google.com/p/snappy-go/source/checkout?repo=: x509: certificate has expired or is not yet valid

请检查是否需要设置 http_proxy

 

关于 no_proxy 的进一步说明:

在玩docker的时候,由于docker是不欢迎 http_proxy https_proxy 这些环境变量的,于是添加 no_proxy 环境变量绕过,如下:

看起来似乎没啥问题,但是问题还是出现了,由于no_proxy 原本是 空的,于是现在的no_proxy 就成了:

似乎也没啥问题呀,但是cloud sdk的httplib2 不小心把 空 匹配了所有域名了,代码如下: (坑爹不?)

 

 

 

 Posted by at 下午 7:22

golang 中接口类型的参数

 go  golang 中接口类型的参数已关闭评论
1月 232015
 

缘起

有些时候为了避免参数的copy,会尽可能将参数定义为指针类型;如果参数是一个接口,那么是不是要定义为接口的指针呢?如果不定一为指针是不是会导致“值传递”呢?

测试

 

http://play.golang.org/p/sw7ejPVV1t

结论

永远不要把接口参数前面添加一个星号

 Posted by at 下午 4:01

go debug

 go  go debug已关闭评论
1月 092015
 

 

点点滴滴

  1. 官方下载的二进制的GO是在 /usr/local/go 下编译出来的,所以调试的时候runtime的一些源代码会去这下面找,如果你把下载到的go放到了 ~/go 下面则会找不到,影响调试,可以做一个软连接,如: ln -s ~/go /usr/local/go
 Posted by at 上午 10:08