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

go build和go install的区别

go build通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。 $ go build hello.go $ lshello hello.go 当然我们也 可以通过-o选项来指定其他名字: $ go build -o mygo hello.go $ lsmygo hello.go 如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件: $ go build $ lsgo-examples hello.go go install与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。 go install编译...阅读全文

golang判断文件或文件夹是否存在

golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断: 如果返回的错误为nil,说明文件或文件夹存在如果返回的错误类型使用os.IsNotExist()判断为true,说明文件或文件夹不存在如果返回的错误为其它类型,则不确定是否在存在 func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err ...阅读全文

博文 2015-11-23 11:21 xielingyun

golang读取ini配置文件

golang读取ini配置文件 一、安装config配置解释包: go get github.com/larspensjo/config 二、载入其包及代码设置 package main import ( "flag" "fmt" "github.com/larspensjo/config" "log" "runtime" ) var ( configFile = flag.String("configfile", "config.ini", "General configuration file") ) //topic list var TOPIC = make(map[string]string) func main() { runtime.GOMAXPROCS(runtime.NumC...阅读全文

博文 2014-03-19 11:18 liaojie

golang 读取配置文件

unix 风格的配置文件 [default] path= c:/go version = 1.44 [test] num = 666 something = wrong #注释1 #fdfdfd = fdfdfd 注释整行 refer= refer //注释3 config.go package conf import ( "bufio" "io" "os" "strings" ) const middle = "=========" type Config struct { Mymap map[string]string strcet string } func (c *Config) InitConfig(path string) { c.Mymap = make(map[string]...阅读全文

博文 2014-07-14 23:38 u014798316

Go语言 time时间格式转换

最近做项目用到golang语言,遇到时间格式相互转换的问题,参考网上资料自己写了代码测试了下,能够成功转换,把代码贴出来以备后用,也供需要者查看。 // time_format.go package main import ( "fmt" "time" ) func main() { fmt.Println("Hello World!") //返回现在时间 tNow := time.Now() //时间转化为string,layout必须为 "2006-01-02 15:04:05" timeNow := tNow.Format("2006-01-02 15:04:05") fmt.Println("tNow(time format...阅读全文

博文 2015-06-15 10:45 qq_534019165

golang 格式化时间为字符串

package main import ( "fmt" "reflect" "time" ) func main() { //格式化字符串为时间 test, _ := time.Parse("2006-01-02", "2013-11-11") //时间增加 after, _ := time.ParseDuration("15m") fmt.Println(test) test = test.Add(after) fmt.Println(test) //格式化时间为字符串 t3 := test.Format("2006-01-02 15:04:05") fmt.Println(t3) //格式化时间为字符串,只保留年月日 t3 = test.Format("2006-01-02") fmt....阅读全文

博文 2014-01-26 15:59 forrestsun

golang simplejson 使用笔记

第一步,得到json的内容 contents, _ := ioutil.ReadAll(res.Body) js, js_err := simplejson.NewJson(contents) 第二部,根据json的格式,选择使用array或者map储存数据 var nodes = make(map[string]interface{}) nodes, _ = js.Map() 第三步,将nodes当作map处理即可,如果map的value仍是一个json机构,回到第二步。 for key,_ := range nodes { ... ...阅读全文

博文 2015-03-17 22:00 iluckyning

go语言实现遍历目录,及查找特定的文件类型

1 // filelist.go 2 package main 3 4 import ( 5 //"flag" 6 "fmt" 7 "os" 8 "path/filepath" 9 "strings" 10 ) 11 12 var ( 13 ostype = os.Getenv("GOOS") // 获取系统类型 14 ) 15 16 var listfile []string //获取文件列表 17 18 func Listfunc(path string, f os.FileInfo, err error) error { 19 var strRet string 20 strRet, _ = os.Getwd() 21 //ostype := os.Getenv("GOOS") // ...阅读全文

博文 2014-05-23 16:48 sn-dnv-aps

Golang的 signal

在实际项目中我们可能有下面的需求: 1、修改了配置文件后,希望在不重启进程的情况下重新加载配置文件; 2、当用 Ctrl + C 强制关闭应用后,做一些必要的处理; 这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 监听信号 notify方法原型 func Notify(c chan<- os.Signal, sig ...os.Signal) 第一个参数表示接收信号的管道 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 下面是一个非常简单地例子: package main import ( "fmt" "os" "os/signal"...阅读全文

在Go语言中记录log:seelog包

前两周调bug调的吐血,虽然解决了但是还是挺浪费时间的。跟同事聊了聊,觉得我们现在项目中的日志记录太少了,导致出了问题不知道怎么下手,还得自己改代码记录日志,然后排查问题。这样如果将来还有bug的话还得这么调,很麻烦,让我深入看一下go语言中如何记录日志(好吧我最近就跟日志耗上了)。 根据python的经验和目前项目中的要求,我对日志的要求有两个: 一是定义日志级别,可以记录debug/warning/error之类的不同级别的日志,这样的话,在通常正常运行的时候,就只需要记录一下运行状态,而报错需要调试的时候,可以显示的日志多一些; 二是定义日志格式,想要记录什么内容,比如时间、级别、位置、日志信息等等。于是,简单的看了一下Go自带的log模块,就知道根本达不到我的要求。 在网上查了一下现...阅读全文

博文 2015-12-17 20:13 anpengapple

go package的理解

golang package是基本的管理单元, 同一个package下面,可以有非常多的不同文件,只要 每个文件的头部 都有 如 "package xxx" 的相同name, 就可以 在主方法中使用 xxx.Method()调用不同文件中的方法了。 文件夹名字可以和这个package 名称不一致, 比如我有个文件夹名字是mypackage,其中包含了a.go,b.go, c.go三个文件 : mypackage | --a.go | --b.go | --c.go 比如a.go中有 Saya(),b.go中有Sayb() 而几个文件共同的package name 确是testpackage 所以在 主函数中调用a.go 和b.go文件中的各自方法只要用,testpackage.Saya() ...阅读全文

博文 2015-04-20 10:40 rojas

golang shadowsock 安装部署

最近一直在用ss但是python的并发并不是很好所以我改换成golang 的ss了。代码下载 编译好的直接下载 server配置(跟官方的不一样): 新建文件夹 进入文件夹后新建文件:config.json pid.cfg start.sh test.log config 是server运行的配置文件 pid.cfg 是server运行的进程号记录的位置 start.sh 是服务启动时候运行的脚本 test.log 这个是排查故障的时候用的错误记录文件 config.json 12345678{ "server":"XXX.com", //服务器ip地址或者绑定的域名 "server_port":8088, // 运行的端口 "local_port":1080, //本地运行端口 "pass...阅读全文

学习go语言碰到的问题:main redeclared in this block

E:\goapp 是我的GOPATH目录 分别建立了2个文件: hello.go // hello package main import "fmt" func main() { fmt.Println("Hello World! 你好,世界!") } sandbox.go // sandbox package main import ( "fmt" "time" ) func main() { fmt.Println("Welcome to the playground!") fmt.Println("The time is ", time.Now()) } 在liteide运行BR的时候报错了:main redeclared in this block previous declarat...阅读全文

liteIDE 快捷键改装

LiteIDE改装 最近一直都在使用liteIDE做开发。公司的项目很紧张,但是在这个周末。还是偷偷的对liteIDE小不爽的地方进行了一些小的改造。 IDE上的run按钮就是运行当前的go文件。 首先我们项目运行只是运行统一或者少数的入口点每次点开固定的文档才能run真的是够了。另外一个主要的原因在于liteIDE没有project管理支持。 而且这个IDE貌似没有出很长时间一般的RCP平台都是有插件开发的。但是这没有插件开发(貌似是有。而且是用python写的)但是,没找到文档(截至 2015年1月19日)也是醉了。 关键入口点还是我在google Code上找到的一个文档。 在配置中的LiteBuild里面有一个gosrc.xml 这个配置文件能修改buttion调用的命令。好吧就只能...阅读全文

Go 中使用 INI 作为配置文件

想必大家都用过 Go 标准库中的 flag 包, 这个是一个十分好用的命令行参数解析库, 但是标准库中并没有关于配置文件解析的包, 官方一般是使用 json 作为配置文件的, 但是对于一些比较简单的情况, 没有复杂的嵌套的情况, 使用 json 作为配置文件, 书写起来还是有点麻烦 (主要是花括号和冒号引号什么的). 于是, 正好有一个项目需要实现一个读取ini配置文件的模块, 我就按照类似 flag 的 api 写了一个 ini parser. 1 go get -u github.com/c4pt0r/ini 使用方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package main import ( "log" "github....阅读全文

博文 Oct 6th, 2014 12:00 pm c4pt0r

GO语言学习: 项目构建 及编译 初步

一个GO工程中主要包含以下三个目录: src:源代码文件 pkg:包文件 bin:相关bin文件 step1: 建立工程文件夹 goproject step2: 在工程文件夹中建立src,pkg,bin文件夹 step3: 在GOPATH中添加projiect路径 例 e:/goproject step4: 如工程中有自己的包examplepackage,那在src文件夹下建立以包名命名的文件夹 例 examplepackage step5;在src文件架下编写主程序代码代码 goproject.go step6;在examplepackage文件夹中编写 examplepackage.go 和 包测试文件 examplepackage_test.go step7; 编译调试包 go bui...阅读全文

Golang程序配置方案小结

Golang程序配置方案小结 七 01 bigwhite技术志 Bool, cobra, config, Cpp, Education, flag, getopt, Go, Golang, ini, Java, json, multiconfig, Perl, POSIX, Ruby, Shell, TOML, twitter, viper, Windows, 命令行选项, 标准库, 配置文件 No Comments 在Twitter上看到一篇关于Golang程序配置方案总结的系列文章(一个mini series,共6篇),原文链接:在这里。我觉得不错,这里粗略整理(非全文翻译)一下,供大家参考。 一、背景 无论使用任何编程语言开发应用,都离不开配置数据。配置数据提供的形式有多样,不外乎命令...阅读全文

Go语言中Path包用法

// path package main import ( "fmt" "os" "path" "path/filepath" ) func main() { //Path操作 fmt.Println("Path操作-----------------") fmt.Println(path.Base("http://www.baidu.com/file/aa.jpg")) //aa.jpg fmt.Println(path.Clean("c:\\file//abc///aa.jpg")) //c:\file/abc/aa.jpg fmt.Println(os.Getwd()) //D:\Projects\GoPath\source\demo\syntax\path fmt.Prin...阅读全文

博文 2016-04-06 17:58 songxingzhu

golang读取json配置文件

test_json.go: package main import ( io "io/ioutil" json "encoding/json" "fmt" ) type JsonStruct struct{ } func NewJsonStruct () *JsonStruct { return &JsonStruct{} } func (self *JsonStruct) Load (filename string, v interface{}) { data, err := io.ReadFile(filename) if err != nil{ return } datajson := []byte(data) err = json.Unmarshal(datajson, v) if ...阅读全文

博文 2015-10-14 16:05 徐学良

golang+数据库定时任务

golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除,一些产品定时下架,邮件定时发送等等! 期初使用nodejs setTimeOut递归嵌套实现,后来发现内存不断飙升,故而放弃,最终改用了性能不错的golang实现 数据库设计 字段名称 含义 id 编号 name 任务名称 create_at 创建时间 type 1. 执行一次 2.循环执行 separate_time 执行间隔 status 执行状态 0.未开始 1. 执行中 -1.执行失败 -2.手动暂停 remark 备注信息 fn 要执行的数据库存储过程或函数 start_time 开始执行时间 next_exec_time 下次执行时间 last_exec...阅读全文

博文 2015-05-26 18:50 深山猎人

Go语言去除文件后缀

package main import ( "fmt" "path" "strings" ) func main() { fullFilename := "/Users/itfanr/Documents/test.txt" fmt.Println("fullFilename =", fullFilename) var filenameWithSuffix string filenameWithSuffix = path.Base(fullFilename) fmt.Println("filenameWithSuffix =", filenameWithSuffix) var fileSuffix string fileSuffix = path.Ext(filenameWithSuffix)...阅读全文

博文 2015-01-31 21:44 itfanr

os.Args[0] 的获取的值的问题

默认情况下 os.Args[0]应该返回可执行文件的路径 ``` go package main import ( "fmt" "os" ) func main() { fmt.Println("test the os package") fmt.Println("Args len", len(os.Args)) for i, arg := range os.Args { fmt.Println("arg", i) fmt.Println("arg", arg) } fileInfo, err := os.Stat("E:\\go\\bin\\studygolang.exe") if err != nil { f...阅读全文

go语言:log4go

go语言中日志框架log4go用法 [plain] view plaincopyprint? package main import ( l4g "github.com/alecthomas/log4go" ) func main() { l4g.AddFilter("stdout", l4g.DEBUG, l4g.NewConsoleLogWriter()) //输出到控制台,级别为DEBUG l4g.AddFilter("file", l4g.DEBUG, l4g.NewFileLogWriter("test.log", false)) //输出到文件,级别为DEBUG,文件名为test.log,每次追加该原文件 //l4g.LoadConfiguration("log.xml")//使...阅读全文

golang 逐行读取文件

package main import ( "bufio" "fmt" "io" "os" ) func main() { fi, err := os.Open("C:/Documents and Settings/xxx/Desktop/tax.txt") if err != nil { fmt.Printf("Error: %s\n", err) return } defer fi.Close() br := bufio.NewReader(fi) for { a, _, c := br.ReadLine() if c == io.EOF { break } fmt.Println(string(a)) } } ================一次性读取=================...阅读全文

博文 2015-04-06 14:07 rojas

golang语言os.Stat()用法及功能

package main import ( "fmt" "os" ) func main() { fileinfo, err := os.Stat(`C:\Users\Administrator\Desktop\UninstallTool.zip`) if err != nil { panic(err) } fmt.Println(fileinfo.Name()) //获取文件名 fmt.Println(fileinfo.IsDir()) //判断是否是目录,返回bool类型 fmt.Println(fileinfo.ModTime()) //获取文件修改时间 fmt.Println(fileinfo.Mode()) fmt.Println(fileinfo.Size()) //获取文件大小...阅读全文

博文 2013-10-28 14:26 igolang

beego里面自定义配置文件

beego编译好的exe通过全路径调用会crash,看了半天,发现是解析不到配置文件,研究了下 发现beego自定义配置文件以后,需要收工parse,我表示,以为是自动化的,没想到是半自动化的…… package main import ( _ "hello/routers" "github.com/astaxie/beego" "fmt" ) func main() { beego.AppConfigPath = "/Users/mmc/dev/golang/myApps/src/hello/conf/app.conf" beego.ParseConfig() port,_ := beego.AppConfig.Int("httpport") fmt.Println("name ", be...阅读全文

博文 2016-02-24 15:23 ziyouchutuwenwu

golang对象序列化和反序列化

模拟测试1,000, 000条数据 每条10个字节 也就是10M不到的 数据(高度结构化的数据) 过程 1.对象序列化为 byte 2.byte反序为对象 3.gzip压缩byte 测试语言go测试方案: raw byte,json ,bson, msgpack (protostuff需要先做对象配置文件,比较麻烦,通常认为和msgpack性能相当 )结果:msgpack 胜出 大小 gzip压缩后大小 对象到byte耗时 byte到对象耗时 raw 10000000 6573252(65%) 未测试 未测试 json 47515988 7919511 (17%) 3248ms 5280ms bson 49888910 9506965 (19%) 3863ms 6235ms msgpack ...阅读全文

golang通过http端口访问hadoop

无聊尝试一下golang连接hdfs, 写了个hello world golang包地址 https://github.com/vladimirvivien/gowfs 安装 go get github.com/vladimirvivien/gowfs 写程序之前需要修改hadoop的两个配置文件 分别是 hsdfs-site.xml 里的 dfs.webhdfs.enabled dfs.webhdfs.enabled true core-site.xml 里的 hadoop.http.staticuser.user hadoop.http.staticus...阅读全文

博文 2014-06-23 11:21 dclink

Rob Pike谈Google Go:并发,Type System,内存管理和GC

1. Rob,你创建了Google Go这门语言。什么是Google Go?能简明扼要的介绍一下Google Go吗? 我还是讲讲为什么要创建这门语言吧,和你的问题稍有些不同。我在Google做了一个有关编程语言的系列讲座,在Youtube上有,谈及了我早期所写的一个语言,叫做Newsqueak,那是八十年代的事,非常早。在做讲座期间,我开始思考为什么Newsqueak中的一些想法在我现在以C++为主的工作环境中无法使用。而且在Google我们经常要构建非常大的程序,光构建就要花很多时间,对依赖的管理也有问题,由于链接了本来并不需要的东西,二进制程序包变得很大,链接时间很长,编译时间也很长,而且C++的工作方式有点古老,其底层实际上C,C++已经有三十年的历史了,而C则更是有四十年了。用现今...阅读全文

博文 2014-10-15 14:59 zhoukuo

supervisor运行golang守护进程

最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西。supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。当然也可以用来实现golang的守护进程,下面描述下具体实现。 安装supervisor 基于centos 6.4。 supervisor使用python编写的,可以用easy_install安装。centos上默认有python的运行环境,安装起来就非常简单了。 $ sudo yum install python-setuptools $ sudo easy_install supervisor 如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_...阅读全文

博文 2015-07-16 18:39 cnsanshao

golang的跨域

在使用golang做web的应用程序的时候,最容易碰到跨域问题了,跨域就是www.a.com访问www.b.com的文件。但是在浏览器里,为了安全起见,这样做是不允许的,这就是js的同源策略了。不懂的话google一下。1.golang做web的应用程序,不用使用像apache的web服务器,因为它自己可以构造一个web服务器。这样问题就来了,因为你使用js做前台,golang做后台,这样js传值的时候,是可以传到服务器的,并且是可以进行跨域访问的,因为golang构造的服务器与你前台就造成了跨域问题了。而ajax传值是传到服务器端的,并且可以进行跨域访问,所以我在开发的时候果断使用了它。 2而在golang接受传值之后,要返回信息给前台,这是golang里面就要设置可以进行跨域访了。设置就...阅读全文

博文 2015-06-19 10:27 helloworld20102010

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...阅读全文

博文 2013-07-20 11:57 无量神通

golang 建临时文件目录以及删除

package main import ( "fmt" "os" "path/filepath" "strings" ) func destorytemp(path string) { filepath.Walk(path, func(path string, fi os.FileInfo, err error) error { if nil == fi { return err } if !fi.IsDir() { return nil } name := fi.Name() if strings.Contains(name, "temp") { fmt.Println("temp file name:", path) err := os.RemoveAll(path) if err !=...阅读全文

golang版的crontab

Linux下cron可以让系统在指定的时间去执行某个指定的工作,crontab则用来管理cron机制。在服务器方面,就可以利用cron进行周期性的执行某些特定的工作,比如定期数据库备份,定期压缩服务器端的数据等等。 现在用golang做服务器的不断增多,服务器端需要周期性的备份或压缩或删除数据是常态。本周就学习了golang版的crontab,感觉该功能很是方便。 1 package main 2 3 import ( 4 "fmt" 5 "github.com/robfig/cron" 6 ) 7 8 func main() { 9 spec := "0, 30, 2, *, *, *" // 每天凌晨2:30 10 c := cron.New() 11 c.AddFunc(spec, c...阅读全文

博文 2015-07-10 15:10 hezhixiong

golang 格式化打印struct

//type:interface value:sturct func PrintStruct(t reflect.Type, v reflect.Value, pc int) { fmt.Println("") for i := 0; i < t.NumField(); i++ { fmt.Print(strings.Repeat(" ", pc), t.Field(i).Name, ":") value := v.Field(i) PrintVar(value.Interface(), pc+2) fmt.Println("") } } func PrintArraySlice(v reflect.Value, pc int) { for j := 0; j < v.Len(); j++ ...阅读全文

博文 2015-01-24 17:31 yumuxu

go语言:优雅的模板切割技术

众所周知,一个网页普遍由头、身、脚组成,而一个项目中头和脚基本相同,这些部分就需要提取出来。 比如: ... ... ... 分割的时候就会分成这样: 头: ... 身: ... 脚: ... 然后就可以通过三次调用func (*Template) Execute这个方法来渲染模板了! 可是本人有个强迫症,看到和被分到了两个文件中十分不爽,所以想了下面这个方法: main.html: {{define "main"}} ... 阅读全文

Beego+uploadify实现图片批量上传

抱歉这个原页面打不开,链接是百度快照的,请作者见谅 我对前端了解的不多,这里原作者提供的思路和插件挺好的,以下全部为转载: Beego+uploadify实现图片批量上传 Golang>Beego+uploadify实现图片批量上传 by momaek 2014-09-12 02:38. 使用uploadify来实现无刷新批量上传图片,后台使用Beego 来处理上传的图片。需要在 form 表单需要添加这个属性 enctype="multipart/form-data" 不然浏览器是不会上传你的文件的。 下载uploadify,就不多说了。免费的版本就可以了,你也可以下载收费的。免费的是flash版本,收费的是html5版本。具体区别我没有研究过。感兴趣的童鞋可以去研究下。 引入upload...阅读全文

博文 2015-04-05 15:47 u012210379

不用go-(xxoo)agent的也有可能是程序员

记得是去年某个时候,在一个群里问大家是怎么翻(什么)墙的,发现很多人是用go-(xxoo)agent的,而我当时完全没听说过go-agent,因为我已经N多年不翻(什么)墙了,于是,有人就说:“连go-(xxoo)agent都没用过你还是程序员吗?”说实话,我也不希望我是程序员啊!可我真的没用过go-(xxoo)agent啊! 想起我一位前同事,工作很多年了,却从来没用过linux!(也不知道他说的是真的还是假的,至于你信不信,反正我是信了。)他说这是他第一次用linux!(也难怪啊,他在原来的公司干里好多年,公司是用.net的。自然没必要用linux。)但我不能说他不是程序员,事实上,他工作完成得很出色。i第一次接触linux,很快就熟悉了。 不用linux还可以用windows,不用go...阅读全文

golang调用c++的dll库文件

最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一、DLL 的编制与具体的编程语言及编译器无关只要遵循约定的 DLL 接口规范和调用方式,用各种语言编写的 DLL 都可以相互调用。譬如 Windows 提供的系统 DLL (其中包括了 Windows 的 API ),在任何开发环境中都能被调用,不在乎其是 Visual Basic 、 Visual C++ 还是 Delphi 二、dll文件里面需要被其他程序访问的函数必须导出,有2种方法源文件如下:DllTestDef.h #ifndef DLLTESTDEF_H #define DLLTESTDEF_H int add(int x, int y); #endif DllTestDef.cpp #include "...阅读全文

go语言-使用swig转化C++代码为go所用

服务端的某个项目,要考虑到性能问题,之前使用基于公司框架的php,性能有瓶颈,经过调研,决定使用go。因为之前有一个关键模块已经使用c++实现,所以计划使用go做HTTP容器,让go和c++模块结合起来。 在网上调研结合方案,go自带的cgo只支持c语言,swig工具可以支持多种语言结合c++,所以决定使用swig,这里简要叙述下swig的使用和一些发现的要点。 1. 我们解压了swig后,首先要根目录运行configure和make,这样会生成各个子目录的makefile,并在当前目录生成preinst-swig.in和swig可执行文件,这些在后续会拥有。 2. 我们进入Example的go里面,这里有一些值得参考的例子 3. 研究那个class例子,有这几个文件: class.cxx和...阅读全文

go语言怎样避免垃圾回收,详见28条

Rob Pike谈Google Go:并发,Type System,内存管理和GC 1. Rob,你创建了Google Go这门语言。什么是Google Go?能简明扼要的介绍一下Google Go吗? 我还是讲讲为什么要创建这门语言吧,和你的问题稍有些不同。我在Google做了一个有关编程语言的系列讲座,在Youtube上有,谈及了我早期所写的一个语言,叫做Newsqueak,那是八十年代的事,非常早。在做讲座期间,我开始思考为什么Newsqueak中的一些想法在我现在以C++为主的工作环境中无法使用。而且在Google我们经常要构建非常大的程序,光构建就要花很多时间,对依赖的管理也有问题,由于链接了本来并不需要的东西,二进制程序包变得很大,链接时间很长,编译时间也很长,而且C++的工作方...阅读全文

博文 2015-03-28 23:22 jackyZ

golang template 例子

golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便. package main import ( "fmt" "os" "text/template" ) type Latlng struct { Lat float32 Lng float32 } func (latlng Latlng) String() string { return fmt.Sprintf("%g/%g", latlng.Lat, latlng.Lng) } func main() { data := []template.FuncMap{} data = append(data, template.FuncMap{"name":"dotcoo1", "u...阅读全文

博文 2014-09-10 13:43 DarkWingBoy

无法安装 golang.org/x/tools/的库

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 而https://github.com/golang/tools 是 golang.org/x/tools的一个镜像,代码是一样的,所以我是如下安装的。 go get github.com/golang/tools 在GOPATH\src\github.com目录下就有tools文件夹。 在src下和github.com平级新建golang.org文件下,在此文件夹下建x文件夹,然后将tools都复制进去。 然后再执行go get github.com/tools/godep。 此时godep安装在你...阅读全文

博文 2016-05-19 18:00 diegodu

Go语言(log4go介绍)

今天来介绍一个Go语言中常用的日志第三方包,即log4go。在C++中,有log4cpp,而在Java中,有log4j。 好了,废话不多说,现在就来介绍log4go的使用。在log4go在github上的链接如下 链接:https://github.com/skoo87/log4go 具体用法可以参考examples文件夹,而且配置文件采用JSON的格式。一个典型的例子如下 log.json: { "LogLevel" : "info", "FileWriter" : { "LogPath" : "log-%Y%M%D.log", "On": true }, "ConsoleWriter" : { "On" : true } } main.go: package main import ( ...阅读全文

博文 2015-02-28 11:49 ACHelloWorld

如何用go调用windows下的c++ 开发的dll及回调进来?

我的c++头文件: #ifdef __cplusplus extern "C" { #endif typedef void (__stdcall *CallBackEvent)(const char* call_event,const char* ext_id,const char* visitor_id, \ const char* from,const char* to ,const char* caller_id, int duration); //port int __stdcall Connect(const char* ip, short port); // void __stdcall DisConnect(); // ...阅读全文

保存一个别人的golang 日志库

package loggerimport ( "fmt" "log" "os" "runtime" "strconv" "sync" "time")const ( _VER string = "1.0.0")type LEVEL int32var logLevel LEVEL = 1var maxFileSize int64var maxFileCount int32var dailyRolling bool = truevar consoleAppender bool = truevar RollingFile bool = falsevar logObj *_FILEconst DATEFORMAT = "2006-01-02"type UNIT int64const ( _ = iot...阅读全文

golang zip 压缩,解压(含目录文件)

每天学习一点go src。 今天学习了zip包的简单使用,实现了含目录的压缩与解压。 写了两个方法,实现了压缩、解压。 package ziptest import ( "archive/zip" "io" "os" "strings" ) //压缩文件 //files 文件数组,可以是不同dir下的文件或者文件夹 //dest 压缩文件存放地址 func Compress(files []*os.File, dest string) error { d, _ := os.Create(dest) defer d.Close() w := zip.NewWriter(d) defer w.Close() for _, file := range files { err := compress...阅读全文

博文 2016-07-05 20:01 xiaofengshuyu