1月 092015
 

 

点点滴滴

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

上面这样写的try,基本实现了try..catch.. 的功能,但是,如果要在catch中提前return,就不那么方便了,虽然也能做,且看下面这个版本, 我们不妨实现try、try..catch.. 两个函数,需要立即返回的时候,使用try更方便些:

 

 Posted by at 下午 7:04
10月 292014
 

缘起

google被墙,code.google.com 上的 golang package何以下载?

解决办法

办法1: 走国外的VPN

不做详细介绍

办法2: 走代理

说明:

go get 本身没有设置代理的功能; go get 本身也没有做太多事情,主要还是依赖hg、git工具来下载代码的;

  1. github 代理设置:

    如果出现证书校验问题,可以做如下设置:

    也可以通过设置环境变量搞定:

     
  2. 关于hg的代理设置:(hg在linux上是python脚本,在windows上是二进制程序)
    1. linux 环境上设置环境变量http_proxy=proxy_host:proxy_port      (定义在 ~/.hg/hgrc 中似乎没有生效, 查了下,命令先参考 ~/.hgrc 文件,再参考当前目录下的 .hg/hgrc 文件)
      linux上关于hg命令的安装:

       
    2. windows上: hg help config  详细介绍了 hg的配置文件的路径及格式,设置代理方式只需在配置文件中添加:
  3. 经过了上述设置,似乎还是不行,因为 go get 确实有时候在执行hg、git命令之前执行了一些(个?)http请求,这些http请求是通过go直接实现的,好在go默认是支持http_proxy(大写也可以HTTP_PROXY)环境变量的,可以直接如下设置:

    当然如果代理是https,可以:

    注意:http:// (或 https://) 是需要的,笔者学艺不精,曾经一直写作 ( export http_proxy=host:port ) ,应该是有软件支持这样写法,现在这么些总不生效,还以为go不支持这个环境变量,再加上刚接触go时,这部分代码也没看太明白,走了不少弯路,现在回头来看,确实go是支持该环境变量的

    http.DefaultClient 默认使用的是 DefaultTransport 而 DefaultTransport 默认参考:  ProxyFromEnvironment; 但是该关系有些隐晦,不是一下就能看出来的

  4. 或许还是无法使用go get ,因为 go get 确实有时候在执行hg、git命令之前执行了一些(个?)http请求的,解决办法: 直接使用hg、git命令来clone到本地,如:

     

 

 Posted by at 下午 3:29
8月 162014
 

问题

写了好几天的Go程序,都没有感觉到还会用到gcc,今天突然在go build 时报如下错误:

exec: “gcc”: executable file not found in %PATH%

原因

今天想了解一下Go语言中如果做字符集转换,发现基础类库中没有这部分,但是有几个第三方的可以使用,比如: https://github.com/djimenez/iconv-go ; 这个是将C版的iconv用Go包了一下,说到这里就水落石出了,因为我引用的iconv-go是C的一个wrap;

注意: Go 可以编译出来不同平台架构下的程序,但是如果使用的C的类库是32位的,但是却试图编译成64位的程序,将会遇到如下错误:

sorry, unimplemented: 64-bit mode not compiled in

当然,有完全Go版的字符集转换类库: http://godoc.org/code.google.com/p/go-charset

 Posted by at 下午 5:15
8月 152014
 

 

参考资料:

  1. http://blog.zhaojie.me/2013/04/why-channel-and-goroutine-in-golang-are-buildin-libraries-for-other-platforms.html      这篇文章讨论的好激烈
  2. https://github.com/dafang/notebook/issues/88    Golang适合高并发场景的原因分析
  3. http://ieqi.net/
  4. http://xiezhenye.com/2012/08/%E5%86%8D%E6%8E%A2-goroutine.html
  5. goroutine 没有完全抛弃线程,而且关系有些暧昧,仔细读这篇文章(评论更精彩): http://xiezhenye.com/2012/08/%E5%86%8D%E6%8E%A2-goroutine.html
 Posted by at 下午 3:04