【golang】用container/list实现栈(Stack)

go语言中的container有heap、list、ring,没有stack。 其中heap是优先级队列,虽然有Push()/Pop()接口,但是使用heap要实现heap.Interface接口,不够简洁。 所以这里用list封装了一个简单的stack,留作他用。 1 package stack 2 3 import "container/list" 4 5 type Stack struct { 6 list *list.List 7 } 8 9 func ...阅读全文

博客园 2014-02-09 22:38 chinabrle

golang中defer的执行

golang中defer的执行 大家都知道golang的defer关键字,它可以在函数返回前执行一些操作,最常用的就是打开一个资源(例如一个文件、数据库连接等)时就用defer延迟关闭改资源,以免引起内存泄漏。例如: func do() (ok bool) { file,_ := os.Open("c:\a.txt") defer file.Close() // doSomething return ok } 我们可以在官方的文档中看到defer的执行顺序是逆序的,也就是先...阅读全文

CSDN博客 2014-03-13 20:39 wowzai

golang匿名函数和闭包

匿名函数和闭包: 闭包和匿名函数经常一起使用,可以使用闭包来访问函数中的局部变量(被访问操作的变量为指针指向关系,操作的是同一个局部变量)如: func closure(x int) (func(), func(int)) { fmt.Printf("初始值x为:%d,内存地址:%p\n", x, &x) f1 := func() { x = x + 5 fmt.Printf("x+5:%d,内存地址:%p\n", x, &x) } ...阅读全文

CSDN博客 2014-03-16 22:16 kai_ding

go golang 代码记录

本帖子用于这段时间项目开发所写的一些常用方法,记录在这。供需查看 ***************************************************************** 1.文件操作:   //写文件 package main import (   "fmt"   "os"   "time") func main() {   //文件不存在则创建,写文件的话则追加。   file, err := os.OpenFile("test.txt", os.O_CREATE|...阅读全文

博客园 2013-08-21 15:26 samurail

notepad++ 的golang语法高亮

go 自带了notepad++的语法高亮配置,只需要在notepad++里导入即可: 1.  打开go的安装目录misc\notepadplus下的userDefineLang.xml,把开头的<NotepadPlus>和结尾的</NotepadPlus>的注释取消掉 2. 把misc\notepadplus目录下的go.xml放到notepad++安装目录下的plugins\APIs目录里 3. 打开notepad++,菜单:语言=>Define you language,在弹出的对话框里导入...阅读全文

博客园 2013-06-03 14:25 potoofly

golang学习(一)之安装

golang简介          Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。 golang官网 http://golang.org/ goland安装 下载地址:https://code.google.com/p/go/downloads/list PS:安装有两种方法,使用MSI安装,自动会帮助配置好环境变量。使用ZIP解...阅读全文

CSDN博客 2014-04-07 23:21 grassroots2011

golang 通用Contains方法

今天在群里看见有人写了一个InAarry方法,主要作用是判断一个元素是否在slice中,看完后,我感觉方法应该还有扩展的空间 于是自己重新写了一个Contains方法,可以支持 slice,array,map等类型   package main import ( "errors" "fmt" "reflect" ) // 判断obj是否在target中,target支持的类型arrary,slice,map func Contain(obj interface{},...阅读全文

博客园 2013-05-23 15:41 zsbfree

windows下golang环境搭建

1.下载windows golang运行环境(根据你的操作系统选择相应的包)  http://code.google.com/p/gomingw/downloads/list    2.解压运行环境缩到 d:\Software\go目录下   3.然后安装 eclipse go 插件:http://goclipse.googlecode.com/svn/trunk/goclipse-update-site/ 更新重启 eclipse 然后配置 golang 目录。 4.配置插件...阅读全文

CSDN博客 2013-01-30 00:06 androidzhaoxiao 等

notepad++ 的golang语法高亮

go自带了notepad++的语法高亮配置,只需要在notepad++里导入即可:   1.  打开go的安装目录misc\notepadplus下的userDefineLang.xml,把开头的<NotepadPlus>和结尾的</NotepadPlus>的注释取消掉   2. 把misc\notepadplus目录下的go.xml放到notepad++安装目录下的plugins\APIs目录里   3. 打开notepad++,菜单:语言=>Define you language,在弹出的对...阅读全文

博客园 2013-02-11 17:11 gzme

进一步认识golang中的并发

如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟。需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发。 并发的意义就是:让一个程序同时做多件事情! 理解这一点非常重要,是的,并发的目的只是为了能让程序同时做另一件事情而已,并发的目的并不是让程序运行的更快(如果是多核处理器,而且任务可以分成相互独立的部分,那么并发确实可以让事情解决的更快)。记得我学C++那时候开始接触并发,还以为每开一个线程程序就会加速一...阅读全文

CSDN博客 2014-04-28 22:24 u011774512

golang test说明解读

go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help buil...阅读全文

博客园 2013-01-22 10:26 yjf512

一个java和golang(go语言)通信的例子。

go语言是一个系统级语言,好处非常多。虽然是一个静态编译型语言,但可以像动态语言一样写程序,语言本身可以提供编写应用程序所需的基本组件,而不用引入第三方的包。如果了解c++、java、python等,会对其简洁和强大有更深的认识,c++实在过于繁琐,java也没有想象的简单,python的效率和go不是一个数量级的。那么多的特性,印象最深的就是其对并发的支持,优雅而高效。一般情况下并发通过进程、线程、基于异步IO的回调来实现,进程和线程不能大量的创建,如超过1万个系统资源就不堪重负了,回调可以尽...阅读全文

CSDN博客 2013-10-16 22:10 qfsun

golang: 详解interface和nil

golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。对此官方文档有明确的说明:http://pkg.golang.org/pkg/builtin/#Type golang interface nil gdb error golang的ni...阅读全文

CSDN博客 2014-01-22 16:16 kjfcpua