Browsed by
分类:Go基础

Go基础语法、Go规范、基本用法等

如何获取Go最新动态和使用最新特性

如何获取Go最新动态和使用最新特性

热爱Go语言,一直使用着、关注着。那么如何获取Go最新动态,使用它最新的特性能? 1、获取最新动态 获取Go语言的最新动态有以下几种方法。 1.1 最直接最原始的方式 —— 官方源码库(hg clone https://code.google.com/p/go/),即 tip。关注Go开发者们提交代码的注释、代码diff。 1.2 关注 golang-dev 讨论组。Go开发者会在这上面讨论Go语言的开发 1.3 关注 issues,以及代码review 1.4 通过 Go dashboard 了解 Go 某个版本的 issues 解决情况(链接最后修改为相应版本即可) 1.5 Go官方网站对应的 tip 版 1.6 关注国内 Go 社区的一些信息 2、使用最新特性 在新版本还未发布时,可能会有些新特性提前公布出来,如果想试验下,就需要安装 tip 版 Go了。 clone Go tip …

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go语言:安装多版本

Go语言:安装多版本

在开发或者自己学习Go的过程中,可能会对比不同版本Go语言的特性、性能等,特别是可能想提前用上tip版本的一些特性,这个时候,系统中可能需要多个Go版本。那么该如何处理这个问题呢? 一般地,我觉得有两种处理方法。 1、目录改名法 比如 Go 版本(go1.3)安装在 /usr/local/go 目录中,并配置了 GOROOT(GOROOT=/usr/local/go)和 PATH (PATH=$PATH:$GOROOT/bin),这时,我们想安装一个Go1.2版本,比如放在了 /usr/local/go1.2 中。 通常,我们都在使用 Go1.3,但某个时候,我们想使用 Go1.2,这个时候,可以将 /usr/local/go 改名为 /usr/local/go1.3,同时将 /usr/local/go1.2 改名为 /usr/local/go,这样,Go版本就变成了 1.2 了。有其他版…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
以io.Writer为例看go中的interface{}

以io.Writer为例看go中的interface{}

Go’s interfaces—static, checked at compile time, dynamic when asked for—are, for me, the most exciting part of Go from a language design point of view. If I could export one feature of Go into other languages, it would be interfaces. 《Go Data Structures: Interfaces》—- Russ Cox 可见interface是go中很重要的一个特性。 在网上有人问:Go语言中接口到底有啥好处,能否举例说明?于是,我考虑以io.Writer接口为例谈谈interface{} 一、io.Writer接口 在go标准库io包…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
再看GOPATH

再看GOPATH

原本不打算介绍GOPATH,然而,总是有初学者问一些关于GOPATH的问题,因此在这里再介绍一下GOPATH GOPATH环境变量用于指定这样一些目录:除$GOROOT之外的包含Go项目源代码和二进制文件的目录。go install和go 工具会用到GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径。 GOPATH是一个路径列表,也就是可以同时指定多个目录。多个目录在Mac和Linux下通过”:”分割;Windows下通过”;”分割。注意,大部分情况下会是第一个路径优先,比如:查找包 对于有些情况,比如,在GOPATH所在的路径之外执行go install会怎么样,可以自己试验一下。 个人建议GOPATH中别设置多个路径,甚至不显示指定GOPATH。可参照《Go项目的目录结构》 有些地方建议在设置了GOPATH之后,将$G…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
关于main包放在哪的问题

关于main包放在哪的问题

据我所知,目前大部分人都会将main包直接放在src根目录,运行时使用 go run xxx.go 这种方式。当然如果需要生成可执行文件,就通过go build在当前目录生成一个可执行文件。LiteIDE也是这么做的(已经和作者提建议了)。 然而,将main包直接放在src根目录,不能用go install 安装成标准的 src pkg bin这样的结构。如果一个项目中有多个server呢?你这样就没法弄了,得分开成几个项目;然而这几个server之间可能有不少需要共享的东西,这样可能又得增加GOPATH。 另外,虽然main包文件直接在src根目录下可以通过go build生成可执行文件,但默认是生成在当前目录下的(可能污染源码),而不会生成到bin目录(除非自己参数指定)。实际上官方都建议将GOPATH的bin目录加入PATH(当然,好像这么做的不多) 我建议直接通过go instal…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
GDB调试Go程序

GDB调试Go程序

说明:作为一门静态语言,似乎支持调试是必须的,而且,Go初学者喜欢问的问题也是:大家都用什么IDE?怎么调试? 其实,Go是为多核和并发而生,真正的项目,你用单步调试,原本没问题的,可能会调出有问题。更好的调试方式是跟PHP这种语言一样,用打印的方式(日志或print)。 当然,简单的小程序,如果单步调试,可以看到一些内部的运行机理,对于学习还是挺有好处的。下面介绍一下用GDB调试Go程序:(目前IDE支持调试Go程序,用的也是GDB。要求GDB 7.1以上) 以下内容来自雨痕的《Go语言学习笔记》(下载Go资源): 默认情况下,编译过的二进制文件已经包含了 DWARFv3 调试信息,只要 GDB7.1 以上版本都可以进行调试。 在OSX下,如无法执行调试指令,可尝试用sudo方式执行gdb。 删除调试符号:go build -ldflags “-s -w” -s:…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go中map数据类型的一些知识

Go中map数据类型的一些知识

1、map数据类型初始化 两种方式:map[string]string{}或make(map[string]string) 2、未初始化的map是nil,它与一个空map基本等价,只是nil的map不允许往里面添加值。(A nil map is equivalent to an empty map except that no elements may be added) 因此,map是nil时,取值是不会报错的(取不到而已),但增加值会报错。 其实,还有一个区别,delete一个nil map会panic,但是delete 空map是一个空操作(并不会panic)(这个区别在最新的Go tips中已经没有了,即:delete一个nil map也不会panic) 3、通过fmt打印map时,空map和nil map结果是一样的,都为map[]。所以,这个时候别断定map是空还是nil,而应…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go项目的目录结构

Go项目的目录结构

项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性 1、一般的,一个Go项目在GOPATH下,会有如下三个目录: 其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。 对于pkg目录,曾经有人问:我把Go中的包放入pkg下面,怎么不行啊?他直接把Go包的源文件放入了pkg中。这显然是不对的。pkg中的文件是Go编译生成的,而不是手动放进去的。(一般文件后缀.a) 对于src目录,存放源文件,Go中源文件以包(package)的形式组织。通常,新建一个包就在src目录中新建一个文件夹。 2、举例说明 比如:我新建一个项目,test,开始的目录结构如下: 为了编译方便,我在其中增加了一个install文件,目录结构:…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...