将Go函数导入Lua中供lua调用

有一个需求,就是使用go语言来实现一些基本模块,使用lua来实现基本逻辑,于是就有了在lua中调用go函数的需求。 go的资料非常少,好在go可以嵌入c语言,使得这个实现变得有可行性。 最终使用了lua中的full userdata来实现这个东西。将go中的函数全部封装成userdata,供lua调用。这样是可行的,由于userdata可以设置metatable,metatable内可以设置一个原方法__call,那么如下的调用:func(1, 3) 就可以变成func.metatable.__...阅读全文

CSDN博客 2014-12-03 16:59 sryan

ubuntu10.04下安装配置GO语言环境

GO语言初探 简介:一直想去研究一下Google牛人们搞出来的GO语言,终于在看了《Go语言之父谈Go:大道至简》这篇文章之后,安耐不住好奇,来体验一下GO语言是什么东西! 1.安装环境ubuntu10.04 2.安装Go的版本控制工具----这是为了下载Go语言的安装源码 ~$:sudo apt-get install mercurial ~$ hg 分布式软件配置管理工具 - 水银 基本命令: add add the specified files on the next commit an...阅读全文

CSDN博客 2012-07-12 23:28 mr_mistletoe

Go语言学习1:开发环境安装

今天准备开始学习一下Go语言,顺便记录一下。 学习一门语言最好的方法当然是去官网:http://golang.org/,打开官网,我们就可以看到一个书写的Hello World的实例程序,这里我们先不管他,点击Documents。我们的学习就从这里开始了。 1.首先去https://code.google.com/p/go/downloads/list下载Go的安装包,我用的是windows的所以下载了go1.1.1.windows-386.zip(zip包要自己配置环境变量,msi包自动配置环...阅读全文

GO语言入门

谷歌系统所使用的编程语言Go,近年来发展的越来越成熟、方便易用。现在,我们可以通过使用LiteIDE让Go语言编程变得更加简单。(注:按本文标题和结尾来看,本文应该只是一个系列中的第一部分。本部分着重介绍语言基础,所以跟大标题可能有些出入。) 第一步 语言基础 数据、类型、函数、控制 Go语言是一个很容易上手同时功能无比强大的编程语言。你可以将它看做是C的现代版,至于更多的东西,还有待你自己去发掘。Go语言有着清晰简明的静态语法结构,但它表现出来的确是一种动态的效果。它还可以编译成本地代码,但却...阅读全文

CSDN博客 2013-12-11 09:26 x_focus

学习Golang语言(7)

1、方法 Go 没有类。然而,仍然可以在结构体类型上定义方法。 方法接收者 出现在 func 关键字和方法名之间的参数中。 2、方法(续) 你可以对包中的 任意 类型定义任意方法,而不仅仅是针对结构体。 但是,不能对来自其他包的类型或基础类型定义方法。 3、接收者为指针的方法 方法可以与命名类型或命名类型的指针关联。 刚刚看到的两个 Abs 方法。一个是在 *Vertex 指针类型上,而另一个在 MyFloat 值类型上。 有两个原因需要使用指针接收者。首先避免在每个方法调用中拷贝值(如果值类型...阅读全文

CSDN博客 2014-12-04 08:15 lz0426001

Go语言异常处理

Go的异常处理 defer, panic, recover<转载> 分类: Go 目录(?)[+] Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的...阅读全文

CSDN博客 2014-09-18 11:27 newsyoung1

Go 命令行使用

go 命令行提供很强大的工具功能: 下面列一下常见的: go build : 编译go代码 go clean : 清除object file ,类似make clean go env : 给出与go 相关的环境变量的取值列表 go fix : fix 因为go版本升级导致的package的问题,个人觉得这个功能非常强大, 要了解详细功能,可以用godoc fix 查看说明 go fmt : godoc 上说可以格式化代码文件,实际上我用的时候,并没有格式化,只是会报错提示,后续需要研究一下 go...阅读全文

CSDN博客 2014-12-10 15:58 aceai

go语言开发环境-win7

今天闲来无事,折腾一下go语言,可能会用它来写一个服务端程序。 以下是维基百科对go语言的介绍 http://zh.wikipedia.org/zh-cn/Go 本人机器是windows7 32位,myeclipse10.1 1.首先下载gomingw 由于go语言对于windows没有原生支持所以需要gomingw,gomingw是Go语言编译器在MinGW上的移植。 下载地址为 https://code.google.com/p/gomingw/downloads/list 我这里下载的是 ...阅读全文

CSDN博客 2013-05-08 13:30 yunji3344

golang处理多个项目src的编译问题

最近在折腾Golang 第一次花功夫研究静态语言,想想就有点小激动,是不是可以走向人生巅峰啦? 碰到一个梗每次编译的时候在多个项目中要来回切换GOPATH GOBIN这两个环境变量于是就写了个Makefile在src目录下执行就OK啦 export GOPATH=$HOME/pj/go02 export PATH=$PATH:$GOPATH/bin export GOBIN=$GOPATH/bin all: go install ./main/main.go run: $GOPATH/bin/m...阅读全文

开源中国博客 2014-12-09 23:59 诸葛囧明

go语言学习笔记(一)基础的基础篇

毕业之前,每个月津津乐道的便是编程语言排行榜。最留意前排坐的几位,但是还会去注意下以前没有听说过的各种语言。现在工作了,只是偶尔会想起来去瞅两眼,也不会再为语言的排名情况想太多。最近,公司突然成了了一个要以go语言为开发语言的小组,我平时可能工作太清闲,在组内也起不了大作用,便被抽调过来凑数了。现在才知道,原来改bug的日子是多么美好。虽然我不喜欢“前端开发”这几个字,但怎么说也稍微有些基础,平时遇到问题也能很快找到突破口。现在,是各种没有听说过,各种学习啊。那也是没有办法的事情啊。希望通过这段...阅读全文

CSDN博客 2012-11-02 18:48 lxy15329

Golang 中的 cgo 使用方法,调用 mysql 库为案例

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; Golang 中关于 cgo 的文档比较少,所以我绝对写个简单的案例,这里用 Mysql 做案例,一种是调用C里边的函数,一种是完全用 golang 来点用 mysql 库函数。我的环境是 MAC ,如果测试的话,请 LDFLAGS 对应自己的环境编写。 注意的地方 Golang 的 cgo 引用必须单独一行,也就是说必须如下写法 import "C" cgo 中 没有 C.NULL 类型 ,所以...阅读全文

《Go语言编程》书中【2.4.1 条件语句】另外一处错误

《Go语言编程》一书中【2.4.1 条件语句】有一处错误,应当是书中使用Go语言版本低于1.1版所致,原文如下: 在有返回值的函数中,不允许将“最终的” return语句包含在if...else... 结构中,否则会编译失败:function ends without a return statement。失败的原因在于, Go编译器无法找到终止该函数的return语句。编译失败的案例如下:func example(x int) int { if x == 0 { return 5 } else...阅读全文

开源中国博客 2014-12-09 19:49 董松

《Go语言编程》【1.5 工程管理】calc.go的代码错误

最近看由人民邮电出版社许式伟 吕桂华等编著《Go语言编程》【第1章 初识Go语言】【1.5 工程管理】时,发现了示例代码calc.go有几处错误,args := os.Args数组变量args[0]代表程序自身,3个if语句len(args)条件判断右值也都小了1,按照书本编写代码运行时将会一直执行Usage()指向的匿名函数,显示如下: USAGE: calc command [arguments] ... The commands are: add Addition of two value...阅读全文

开源中国博客 2014-12-09 19:49 董松

给终端来点彩色(c语言和Golang版)

如果用过AIX或Linux下的nmon工具的应当会注意到,它可以把文字显示成多种颜色,并巧妙的利用颜色和字符组合出各种图形 来显示系统的运行情况。看看它官网附的这张图: 如果你看过它的源码,你会发现它用的是 Ncurses 库来实现彩色显示的。Ncurses很强大,可以在任何遵循ANSI/POSIX标准的UNIX系统上运行, 包含了一系列强大的功能。 但在这里,它并不是我要研究的对象,它太重量级了。 我想在这说明的是一种简单的可以让终端显示彩色文本的方法。利用16进制的颜色控制符就足以在终端打印...阅读全文

CSDN博客 2014-12-09 10:07 xcltapestry

Go语言调用C语言函数的坑

最近在看人民邮电出版社 许式伟 吕桂华编著的《Go语言编程》,看到【1.2.9 语言交互性】小节的cprint.go。未按照书中源代码格式编写,而是把 import "C" 和 import "unsafe" 合并放入小括号中并和注释结束符 */ 间隔了一行,这也是大多数Go语言学习和开发者经常使用的代码风格,我修改后的代码如下: package main/*#include <stdio.h>#include <stdlib.h>*/import ( "C" "unsafe")func mai...阅读全文

开源中国博客 2014-12-09 15:42 董松

《Go语言编程》书中另外一处错误

《Go语言编程》一书中【2.4.1 条件语句】有一处错误,应当是书中使用Go语言版本低于1.1版所致,原文如下: 在有返回值的函数中,不允许将“最终的” return语句包含在if...else... 结构中,否则会编译失败:function ends without a return statement。失败的原因在于, Go编译器无法找到终止该函数的return语句。编译失败的案例如下:func example(x int) int { if x == 0 { return 5 } else...阅读全文

开源中国博客 2014-12-09 15:42 董松

《Go语言编程》calc.go的错误

最近看由人民邮电出版社许式伟 吕桂华等编著《Go语言编程》【第1章初识Go语言】【1.5 工程管理】时,发现了示例代码calc.go有几处错误,args := os.Args数组变量args[0]代表程序自身,3个if语句len(args)条件判断右值也都小了1,按照书本编写代码运行时将会一直执行匿名函数Usage(),显示如下: USAGE: calc command [arguments] ... The commands are: add Addition of two values. s...阅读全文

开源中国博客 2014-12-09 15:42 董松

golang中并发sync和channel

golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外的类型大多用于底层库的例程。更高级的同步操作通过信道与通信进行。 type Cond func NewCond(l Locker) *Cond func (c *Cond) Broadcast() f...阅读全文

CSDN博客 2014-12-01 15:19 chenbaoke