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

正确使用Go的Timer

我们总是会使用Timer去执行一些定时任务,最近在Go语言的定时器使用上面不小心踩到一点问题,这里记录一下。 go demo(input) func demo(input chan interface{}) { for { select { case msg <- input: println(msg) case <-time.After(time.Second * 5): println("5s timer") case <-time.After(time.Second * 10): println("10s timer") } } } 写出上面这段程序的目的是从 input channel 持续接收消息加以处理,同时希望每过5秒钟和每过10秒钟就分别执行一个定时任务。但是当你执行这段程序...阅读全文

博文 2014-11-16 09:30:05 skoo

go语言常用函数:copy

数组切片内容复制 用于将内容从一个数组切片复制到另一个数组切片。如果加入的两个数组切片不一样大,就会按其中较小的那个数组切片的元素个数进行复制。 slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置 //http://www.cnblogs.com/osfipin...阅读全文

博文 2015-07-28 03:00:00 osfipin

用Go语言开发桌面应用--By TSL

【后天就是本地的”三月三“壮族民歌节了,心情大好就把私藏的东西拿出来分享给大家】 我的基本开发环境是win7 32位,go1.4 windows/386,LiteIDE X 27。其实开发环境不重要 首先我们来安装Go 的GUI库 ,我们即将用到的是Tcl/Tk的Go绑定,作者的Git主页是https://github.com/nsf/gothic ‍a 把第三方库下载到本地: 我们进入作者主页的_examples目录里,把任意一个go例子的代码复制到LiteIDE里作为一个新的go文件,接着 可以点LiteIDE的”编译“菜单,再选择”Get“,这时LiteIDE会自动下载github.com/nsf/gothic ,如果提示Out of path请检查GOPATH环境变量并确认你的文件是...阅读全文

博文 2015-04-19 11:00:05 名字不能长

极路由1s(mt7620a)OpenWrt交叉编译go程序

起因,由于coolpy5核心转换到go语言开发,所以目前超人正在进行相关的技术攻关,在程序编写方面一切都相对顺利。由于coolpy5是一个真正的商业级性能的系统也考滤到coolpy之前的版本已经确定的coolpy是支持以家庭路由器为雾计算节点直接实现智能家居或智慧农业的离线解决方案,所以超人才进行了这一次技术预测试,也为以后coolpy这环节的闭环作准备工作。以下文章关于openwrt相关的基础将会略过,看不懂的朋友请自行查找相关知识点。 略过知识点: 1.linux基础(交叉编译基础) 2.openwrt管理(openwrt基础) 游戏开始: 1.首先通过putty连接到路由器看看路由器cpu架构/这里边有一个错误,你看到的所有cpu相关的描述都是mips字眼,其实极1s路由器的这个cpu...阅读全文

博文 2016-06-17 03:00:02 jacle169

go 切片:用法和本质

文: http://golang.org/doc/articles/slices_usage_and_internals.html中文: http://zh-golang.appsp0t.com/doc/articles/slices_usage_and_internals.html Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。切片有些类似于其他语言中的数组,但是有一些不同寻常的特性。本文将深入切片的本质,并讲解它的用法。 数组 Go的切片是在数组之上的抽象数据类型,因此在了解切片之前必须要要理解数组。 数组类型由指定和长度和元素类型定义。例如,[4]int 类型表示一个四个整数的序列。数组的长度是固定的,长度是数组类型的一部分(int[4] 和 [5]int 是完全不同的类...阅读全文

博文 2016-01-31 05:00:00 yangyangye

golang os

const ( O_RDONLY int = syscall.O_RDONLY // open the file read-only. O_WRONLY int = syscall.O_WRONLY // open the file write-only. O_RDWR int = syscall.O_RDWR // open the file read-write. O_APPEND int = syscall.O_APPEND // append data to the file when writing. O_CREATE int = syscall.O_CREAT // create a new file if none exists. O_EXCL int = syscall.O_...阅读全文

博文 2014-10-04 19:26:01 ggaaooppeennngg

go语言使用protobuf

网上为什么充斥着大量几乎一模一样而且不正确的教程??? 妈的打开一个关于golang和protobuf的教程,无非都是扯他妈的protobuf多么多么牛逼,xml多么多么傻逼,然后就是怎么安装protobuf,然后又是屎一样的示例。 安装过程没一个对的,我搜了那么多博客,全都是一个德行,我先写一下ubuntu的安装步骤,同时适用于mac和其他linux,而且保证是对的。 真的无力吐槽,先说正事,一会接着吐。 一、首先去 https://github.com/google/protobuf 下载protobuf,按照readme的步骤来编译安装。如果执行autogen.sh的过程中出现autoreconf not found的错误,说明没有安装automake,在ubuntu执行sudo ap...阅读全文

博文 2015-07-25 03:00:11 wolfred7464

golang数据类型-slice(切片)

slice介绍 数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice,slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度,它是可变长的,可以随时往slice里面加数据。 初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针。数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针(point):指向数组中slice指定的开始位置; 2.数组切片中的元素个数(len):即sli...阅读全文

博文 2015-06-17 20:17:41 JesseYoung

Go语言和Tcl/Tk GUI库的例子1 按钮

a 用vtcl建立一个新project,然后制作界面并保存 我自己做的 如图1 b 打开vtcl产生的main.tcl文件,我们即将进行提取关于界面的代码 复制如下匹配的n行代码, ################### # CREATING WIDGETS ################### 。。。此处省略Tcl/Tk代码n行 ################### # SETTING GEOMETRY ################### 。。。此处省略Tcl/Tk代码n行 ############################################################################### 我复制出来的大概100多行,接着要进行删除精简 1...阅读全文

博文 2015-04-30 18:00:00 名字不能长

emacs配置golang

昨天看到同事再用emacs,好强大的样子,让我这种伪emacser羡慕不已,回来之后就寻思着再折腾折腾emacs. 首先下载golang官方的emacs mode: http://golang.org/misc/emacs/go-mode.el 下载auto-complete http://cx4a.org/software/auto-complete/#Downloads 然后解压文件到任意目录:auto-complete cd auto-complete make make install 选择要安装到得目录 再emacs得配置文件中添加 (add-to-list 'load-path "INSTALLPATH/auto-complete") (require 'auto-complet...阅读全文

博文 2014-10-04 19:26:52 无量神通

Mingw静态编译go-sqlite3包

在github.com/mattn/go-sqlite3上,作者说在windows下使用go-sqlite3要使用动态链接的方法[Go does not support static linking for external C library; sqlite3 should be built as a shared library. If it runs on Windows, it needs dll.],结合网上的资源,我整理出了如何使用静态编译的方法使用go-sqlite3。 折腾的过程中发现使用go get命令的时候会把源码下载到go的安装目录\src\pkg\下,然后使用go install 的时候会编译包再安装的pkg目录下。src\pkg\github.com\mattn\g...阅读全文

博文 2014-10-04 19:26:07 棋有此理

golang IO COPY

使用golang实现 IO copy,测试程序如下: package main import ( "fmt" "io" "os" "syscall" ) func main() { var errCh chan error errCh = Go(func() error { return test_stdout() }) if err := <-errCh; err != nil { fmt.Printf("End io_copy: %s\n", err) //return err } } //异步执行 func Go(f func() error) chan error { ch := make(chan error, 1) go func() { ch <- f() }() return...阅读全文

博文 2015-10-30 19:00:03 golang_yh

golang 应用的部署相关技术

nohup命令 在 linux 下面部署,我们可以利用 nohup 命令,把应用部署在后端,如下所示: nohup ./yourapp & 这样你的应用就跑在了 Linux 系统的守护进程 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 一般如何如下两种方式使用它: nohup command 或者 nohup command & 这之间的差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 使用它需要注意的问题是:它把标准输出(STDOUT)和标准错误(STDE...阅读全文

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

go interface的一点心得

先看golanger.com关于interface的说明 *Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here* 翻译下来就是: interfaces 用来指定一个object的的行为,如果该object能够执行该行为,这个接口就可以替代这个对象。 文档中举了一个例子: fmt包中的Fprintf方法 `func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)...阅读全文

golang--监控goroutine异常退出

在golang中,我们可以很轻易产生数以万计的goroutine,不过这也带来了麻烦:在运行中某一个goroutine异常退出,怎么办? 在erlang中,有link原语,2个进程可以链接在一起,一个在异常退出的时候,向另一个进程呼喊崩溃的原因,然后由另一个进程处理这些信号,包括是否重启这个进程。在这方面,erlang的确做得很好,估计以后这个特性会在golang中得到实现。 由此得到启发,我写了一个简单的程序,监控goroutine异常退出。 package main import ( "log" "runtime" "math/rand" "time" ) type message struct { normal bool //true means exit normal, otherw...阅读全文

博文 2014-10-04 19:26:02 getong

在Go里使用OpenCL,"下雨天压榨GPU更配哦"

文标题: 能在Go里用GPU运算的OpenCL语言绑定包 首先网页访问https://github.com/pseudomind/go-opencl/了解一下,然后下载它 C:\go\src\src>go get github.com/pseudomind/go-opencl/cl 再搜索一下你的OpenCL.dll文件,把它复制到gcc编译器的lib目录里比如我在c盘搜索出opencl.dll,把它复制到了C:\TDM-GCC-32\lib\里 用LiteIDE打开https://github.com/pseudomind/go-opencl/tree/master/examples/clinfo里面的例子,可以run了 examples/rotate里面的例子,要build后,在cmd窗...阅读全文

博文 2015-08-13 09:00:01 名字不能长

vim中go的语法高亮设置

测试环境:ubuntu 14.04 之kylin 版 vim本身不带golang的语法高亮 解决方案: 在 /usr/share/vim/vim74/ 中 有这么几个文件夹:syntax, ftplugin, indent, compiler等, 我们查看syntax可以看到有gcc.vim等其他语法文件,但是没有go.vim, 好在我们可以从源码下载 http://www.golangtc.com/download 下载 go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩, 将下载目录的 go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim...阅读全文

notepad++支持go语言高亮与go语言插件

一、notepad++安装go语言插件 notepad++是十分流行的文本编辑器,而它拥有强大的功能,比如它可以支持go语言。当然这需要go语言相应的插件。 打开notepad++后,选择插件选项,在插件下选Plugin Manager-->Show Plugin Manager-->在Plugin中选择GOnpp选Install; 二、notepad++支持go语言高亮 1.在Go的安装目录下,找到misc文件夹,打开notepadplus文件夹,编辑userDefineLang.xml文件,将文件中的的注释去掉,注意是去掉注释,不是把它俩去掉。 2.将该目录(misc/notepadplus)下的go.xml复制到notepad++...阅读全文

go语言开发环境配置:sublime text3+gosublime+gocode

----------------------------------------开发环境配置 http://blog.csdn.net/wolinxuebin/article/details/7724049 Go语言的开发环境配置的经验总结: 可参考:http://www.cnblogs.com/yjf512/archive/2012/06/19/2555248.html 配置gocode(可选): 通过eclipse git下载gocode源代码到:G:\360CloudUI\Cache\120876992\work\git_repo\gocode 复制gocode目录到D:\Go\bin中 cmd执行:D:\Go\bin>go build ./gocode 生成gocode.exe文件 ...阅读全文

博文 2014-10-04 19:26:01 tower888

急招武汉GO语言开发工程师15-25K

急聘武汉地区golang服务器开发工程师15-25K 职位描述: 1、负责后端GO语言TCP协议开发工作 2、与基础架构工程师、运维工程师一起实现稳定、可扩展的后台服务 3、数据驱动,不断通过产品和技术数据进行改进,并完成快速迭代 任职资格: 1、熟悉GO语言,熟悉C++更好 2、熟悉TCP/UDP协议,IM单聊群聊架构,游戏状态机、定时器等 3、熟悉常见的游戏开发算法,网络同步策略等 有意者加QQ:1948977976详聊或直接发简历到1948977976@qq.co...阅读全文

简单的spider框架-带sample

之前参考别人的一些材料,做的一个简单的spider框架,里面带有一个小sample,以前挂在oschina上,现在挂到github上,欢迎大家批评给建议。 https://github.com/colefan/game_spider 另外,在做一个tcp服务器框架,还在制作中,有兴趣的同学,相互讨论哦。 https://github.com/colefan/gsg...阅读全文

golang begin

1. install go 2. configure sublimehttp://blog.csdn.net/cyxcw1/article/details/10329481 3.io package 1) io.Reader 1 // io.Reader 接口示例 2 package main 3 4 import ( 5 "fmt" 6 "io" 7 "os" 8 "strings" 9 ) 10 11 func main() { 12 FOREND: 13 for { 14 readerMenu() 15 16 var ch string 17 fmt.Scanln(&ch) 18 var ( 19 data []byte 20 err error 21 ) 22 switch stri...阅读全文

博文 2014-10-04 19:26:01 harrysun

Golang在windows7下搭建eclipse开发环境

一.下载安装go 这里有个下载地址:点击下载 下载安装完毕后,配置系统变量环境: (我默认安装在D:\Go,另外新建一个目录D:\go_workspace,并在此文件下新建三个目录,分别是bin,pkg,src) 然后打开cmd,输入go env 二.配置eclipse环境 打开goclipse的github地址:打开网址 点击打开插件加载地址:打开网址 注意此插件默认需要jkd8,否则安装了也不会显示 设置goclipse 编译gocode实现代码提示 打开gocode的github地址:打开网址 下载源代码到本地,解压后放在gopath下的src目录下 执行cmd 此时将会生成gocode.exe文件,将此文件复制到任一位置,然后再goclipse中配置如下 三,新建Go Projec...阅读全文

博文 2015-08-22 12:00:01 andyadc

golang ---- slice 切片

在很多应用场景中,数组并不能满足我们的需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度。 // 和声明array一样,只是少了长度 var fslice []int 接下来我们可以声明一个slice,并初始化数据,如下所示: slice := []byte {'a', 'b', 'c', 'd'} slice可以从一个数组或一个已经存在的slice中再次声明。slice通过array[i:j]来获取,其中i是数组的开始位置,j是结束位置,但不包含array[j],它的长度是j-i...阅读全文

博文 2014-10-04 19:26:06 hufeng825

内部排序算法(Golang版本)

package main import ( "fmt" ) func main() { //保存需要排序的Slice arr := []int{9, 3, 4, 7, 2, 1, 0, 11, 12, 11, 13, 4, 7, 2, 1, 0, 11, 12, 11} //实际用于排序的Slice list := make([]int, len(arr)) copy(list, arr) BubbleSortX(list) fmt.Println("冒泡排序:\t", list) copy(list, arr) QuickSort(list, 0, len(arr)-1) fmt.Println("快速排序:\t", list) copy(list, arr) //将arr的数据覆盖到li...阅读全文

博文 2015-11-23 03:00:00 achst

go语言四——脚本一

工作中用go语言写了点脚本代替python的功能,涉及文件读写,记录如下 package main import ( "os" "os/exec" "log" "bytes" "strings" "bufio" //文件读写 "strconv" // "fmt" ) const pwd = "/usr/local/nginx/htdocs/" func get_logname(ziplog_name string) (string) { var out bytes.Buffer //hint:用exec.Command获取一个Cmd对象,设置标准输出到out,执行Run操作 cmd := exec.Command("unzip","-o",ziplog_name,"-d",ziplog_na...阅读全文

博文 2014-10-04 19:26:27 ciaos

[翻译] go build 命令是如何工作的?

之前 Dave Cheney 已经为我们讲解过了 Go 是如何用 go 编译自己的。这里,他继续给大家讲解一下 go build 命令是如何工作的(原文)。 ————翻译分隔线———— go build 命令是如何工作的? 本文以 Go 的标准库为例,介绍了 Go 编译过程的工作原理。 gc 工具链 本文将关注 gc 工具链。gc 工具链的名字来自 Go 的前端编译器 cmd/gc,这主要是为了与 gccgo 工具链进行区分。当人们讨论 Go 编译器的时候,多半是指 gc 工具链。本文不关注 gccgo 工具链。 gc 工具链是直接从 Plan 9 的工具链剥离出来的。该工具链由一个 Go 编译器、一个 C 编译器、一个汇编器和一个链接器组成。可以在 Go 代码的 src/cmd/ 子目录找...阅读全文

博文 2014-10-09 16:20:10 mikespook

golang map to struct

http://stackoverflow.com/questions/26744873/converting-map-to-struct func SetField(obj interface{}, name string, value interface{}) error { structValue := reflect.ValueOf(obj).Elem() structFieldValue := structValue.FieldByName(name) if !structFieldValue.IsValid() { return fmt.Errorf("No such field: %s in obj", name) } if !structFieldValue.CanSet() ...阅读全文

博文 2016-06-16 13:00:15 diegodu

Go语言核心编程 3.2-slice切片

Slice(切片)代表变长的序列,序列中每个元素都有相同的类型。一个slice类型一般写作[]T,其中T代表slice中元素的类型;slice的语法和数组很像,只是没有固定长度而已。数组和slice之间有着紧密的联系。一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象。一个slice由三个部分构成:指针、长度和容量。指针指向第一个slice元素对应的底层数组元素的地址,要注意的是slice的第一个元素并不一定就是数组的第一个元素。长度对应slice中元素的数目;长度不能超过容量,容量一般是从slice的开始位置到底层数据的结尾位置。内置的len和cap函数分别返回slice的长度和容量。多个slice之间可以共享底层的数...阅读全文

博文 2016-03-22 21:00:05 abv123456789

go语言常用函数

append append:在切片末尾添加元素并返回结果。append函数原型:func append(slice []T, elements...T) 。其中T表示任意类型。 示例1: 1 arr1 := []int{1, 2, 3} 2 arr2 := append(arr1, 4, 5, 6) 3 fmt.Println(arr2) // 输出:1,2,3,4,5,6 append不仅能在切片末尾添加普通元素,还能在切片末尾添加切片。 1 arr1 := []int{1, 2, 3} 2 arr2 := []int{4, 5, 6} 3 arr3 := append(arr1, arr2...) // 此处必须要有 ... 否则编译器会报类型错误 4 fmt.Println(arr3)...阅读全文

博文 2015-06-12 03:00:00 hezhixiong

golang---vim语法高亮

下载   在http://www.golangtc.com/download上下载 go1.3beta2.src.tar.gz版本,高于这个版本中没有vim的配置了。 解压 tar zxf go1.3beta2.src.tar.gz 配置 方式一   将下载目录的go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim74/对应目录,ftdetect文件夹包括文件复制到vim74中 方式二(无需root权限)   go/misc/vim/目录下文件拷贝到~/.vim/目录下(如果没有该目录则新建) mkdir ~/.vim cp -r vim/* ~/.vim/   新建~/.vi...阅读全文

博文 2016-07-09 13:00:01 FreeApe

把别人的Tcl/Tk代码加入到Go语言里7 文本模式(终端)的进度条

a 首先打开网页 http://wiki.tcl.tk/16939 b 把网页里提到的第一段tcl/tk代码复制到go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 我们需要再增加几行tcl/tk代码到init_script字符串常量末尾 for {set i 0} {$i < 6200} {incr i 200} { progres $i 6200 after 200} d OK,可以...阅读全文

博文 2015-05-01 15:00:05 名字不能长

[译文] 关于Golang的一个令我深深叹服的特性

自:http://golanghome.com/post/155 [译文] 关于Golang的一个令我深深叹服的特性 原文地址:这里 译文: 翻译By:@jemygraw 补充说明:一些评论的人对本文中的一些内容感到很困惑,但是我不想让大家感到我言语不清,所以在此澄清一下: 是的, 默认情况下,向一个hash表插入的元素是没有固定顺序的。但是因为很多原因,比如有一些帖子就指出了不是所有的map都是hash表(而且有些语言还有有顺序的hash表,比如java的TreeMap), 我还是能够了解为什么很多人(尤其是对Go map实现机制比较了解的人)会假定遍历map元素的顺序和向map插入元素的顺序是相同的。 我原来的例子是我自己想出来的,并没有演示出大多数版本的Go关于这方面的特点(尽管我听说...阅读全文

博文 2014-10-09 16:00:02 leonzhouwei

go语言:linux 源码安装

首先下载源码:http://www.golangtc.com/download 解压后,进入src文件夹,执行 ./all.bash 等待安装结束后,把目录复制到/usr/local/里,设置两个环境变量: export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin 然后就可以测试啦 Create a file named hello.go and put the following program in it: package main import "fmt" func main() { fmt.Printf("hello, world\n") } Then run it with the go tool: $ go run hell...阅读全文

博文 2015-05-15 03:00:01 xujinping

go语言六——连接mysql

自:Golang连接Mysql 首先go-driver-sql的mysql版本,我通过 go get code.google.com/p/go-mysql-driver/mysql 安装失败,貌似是git版本不够新的缘故,不过用不着这么麻烦,直接去github下载源代码即可,解压到/usr/local/go/src/pkg/mysql目录 package main // 导入sql包, 跟java.sql类似的 import "database/sql" import _ "mysql" import "encoding/json" import "fmt" // 定义一个结构体, 需要大写开头哦, 字段名也需要大写开头哦, 否则json模块会识别不了 // 结构体成员仅大写开头外界才能访问...阅读全文

博文 2014-10-04 19:26:24 ciaos

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

阅读该文后的一些理解 1 io.Writer接口 io.Writer接口有如下定义 package io type Writer interface { Write(p []byte) (n int, err error) } //根据go中接口的特点,所有实现了Write方法的类型,我们都说它实现了io.Writer接口。 2 somepkg.abc类型实现了io.Writer接口 package somepkg type Abc struct { id int } func (a *Abc) Write(p []byte) (n int, err error){ //writing.... return 1,nil //模拟返回,n表示写了几个字节,err表示是否有错误 } //根据go...阅读全文

博文 2014-10-04 19:26:27 waynehu

go语言工程约定,分包和编译

go-lang已经发布了go1,前段时间看了一下go语言的教程,就喜欢上了这门语言,但使用多个文件编译是碰到一些麻烦,引用出错编译通不过,google之找到了这篇教程https://golang.org/doc/code.html,我按自己的理解记录一下,英文好的童鞋还是看原文吧! go语言可以用makefile,也可以按他的约定来直接编译。约定其实比较简单,go语言是这么来配置他的工程的 prjDir # 工程根目录 bin/ hello # 可执行文件,window下为hello.exe pkg/ # 包跟目录 linux_amd64/ # 执行平台 example/ # 分包目录 newmath.a # 包,类似java中的jar src/ # 源代码 example/ hello/ ...阅读全文

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

golang的channel使用

channel sample1 close twice ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool的,那么读取到的是false 向已经关闭的channel写数据http://play.golang.org/p/vl5d5tkfl7 ch := make(chan string) close(ch) ch <- "good" // 会panic的 判断channel是否close i, ok ...阅读全文

博文 2014-10-04 19:26:45 go-skyblue

Ubuntu 13.04 golang开发环境配置

env: ubuntu 13.04 i386 go 1.0.3 sublime text 2 go/golang不错的IDE组合:gocode + sublime text 2 + gosublime 首先安装go,两种方法: 1. 自动:sudo apt-get install golang 配置环境系统帮你配置好了 2. 手动:下载go二进制包,解压到/usr/local/目录下(这个目录是go建议的,我安装到其它目录在配置gocode自动补全时出现问题·),然后配置go环境,在~/.bashrc文件最后添加如下: export GOROOT=/usr/local/go export GOBIN=$GOROOT/bin export GOOS=linux export GOARCH=38...阅读全文

博文 2014-10-04 19:26:10 Honghe

把别人的Tcl/Tk代码加入到Go语言里15 游戏8 翻牌游戏

这次文章主要引用了网上的这篇教学http://www.cwflynt.com/TclForTeens/ 步骤a 下载第17课里提到的扑克图像包 http://www.cwflynt.com/TclForTeens/cards.zip 解压缩cards.zip内所有文件到c:\cards\目录下 【你可以放在桌面的cards目录里,随意】 步骤b 跳到第20课http://www.cwflynt.com/TclForTeens/lsn20.html 找到最后一段框起来的源代码,它的上一句是“And that's all the changes. Here's the complete game.” 把这段框起来的代码复制到如下go代码的字符串常量里 package main import "g...阅读全文

博文 2015-05-14 08:00:00 名字不能长

把别人的Tcl/Tk代码加入到Go语言里4

a 首先打开网页 http://wiki.tcl.tk/1270 b 把网页了提到的第一段代码【注意第一段只到wm resizable . 0 0结束】复制到go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里run ,运行效果如...阅读全文

博文 2015-05-01 14:00:00 名字不能长

golang编程之时间编程

本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 13...阅读全文

博文 2014-10-04 19:26:10 yavobo

golang之array

数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length)。 √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式(在编译期即可计算结果的表达式)。golang数组长度是一个内置常量,可以用len()函数来获取。 √ golang数组是一个值类型,在赋值和作为参数传递时都将产生一次复制动作,因此在函数体中无法修改传入的数组的内容。 • 数组声明和初始化 ▶ 数组声明 ▪ 语法如下 // 数组声明 var array [n]Type // 数组声明和初始化 var array [n]Type = [n]Type{v1, v2, ..., vn} var array = [n]Type{v1, v2, ....阅读全文

博文 2016-02-20 03:00:04 heartchord

把别人的Tcl/Tk代码加入到Go语言里1

a 首先打开网页 http://wiki.tcl.tk/12977 b 把网页了提到的代码复制到go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里run ,运行效果如...阅读全文

博文 2015-05-01 14:00:01 名字不能长

go~漫漫学习路

突然间,回想起了以前的生活,想起了很多的事情,现在回想到的过去都是美好的,都是现在所想念的,人生就是这样,很多东西都要失去后才会懂得珍惜!现在想想现在的生活是不是等到以后又要开始想念了呢? 我决定了每周在这里写一篇雷记录我现在的生活、学习,记录我的点点滴滴。大学真的过的很快,回想起两年前刚到学校时的无目标,真是觉得可惜,大三了,什么都变了,个人的心态变得最厉害了,现在开始珍惜目前的生活了!在为自己的目标忙碌着,心理又有那么一丝丝的害怕,害怕自己学的知识不够。 在人生的道路上不断的摸索,同时也希望能够得到有经验的前辈帮助,少走些弯路!自己喜欢数据库,同时又是那么的崇拜冯大辉,现在只能通过不断的努力好好学习知识啦! 加油...阅读全文

博文 2014-10-04 19:26:38 cheng~ding

go---agent 提高访问网站速度的方法

通过go--agent+谷歌浏览器插件SwitchyOmega,很多小伙伴们能跃出去看看外面的世界,那么问题来了:打开一个网站,速度实在是蛋蛋的忧伤。如下我介绍亲如何提高速度: Step1:工欲善其事,必先利其器,我们需要挑选一款找好用IP的工具,他的名字叫:GoGo Tester,有它的更新网址:https://code.google.com/p/gogo-tester/; Step2:把该工具放在go-agent的local目录下,运行之。先 随机测试,挑选10个ip,然后再 标准测试,挑选出稳定的ip; Step3:把挑选出的稳定且强悍的ip地址复制到go-agent的local目录下文件proxy.ini中[iplist]下的google_cn和google_hk中,注意了,以前的例...阅读全文

博文 2015-06-18 09:02:46 myspring_zheng

linux下使用goagent

自:http://www.xzcblog.com/?post=125 宣赠超的博客 说到穿越长城的软件有很多,不过最近最有名而且免费的就非goagent莫属了,goagent是利用谷歌的GAE服务来翻越长城的,具有速度快,稳定的特点,正好今天我的ssh代理过期,于是准备以后使用goagent来FQ。 1:申请appengine.google.com的个人apppid 首先登录appengine.google.com,申请个人apppid,它将在Goagent中用到。appid只要唯一就可以,必须是英文字符和数字。 二、安装和本地部署 安装goagent服务端 既然已经成功的申请到了apppid,那么接下来的工作就是安装goagent的服务端了。 1:下载 首先我们下载goagent:http...阅读全文

博文 2014-10-04 19:26:26 majianbin

安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。 如下例所示,二段式的定义在append操作后会污染到源数组: a := [5]int{1, 2, 3, 4, 5} s1 := a[1:3:3] s2 := a[1:3] _ = append(s1, 6) fmt.Println(a) //out:[1 2 3 4 5] _ = append(s2, 7) fmt.Println(a) //out:[1 2 3 7 5] 关于对new函数的改进,chai大帮我发...阅读全文

博文 2014-11-11 18:00:02 sz_Promi