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 Lis...阅读全文
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://...阅读全文
【备份】golang开发环境搭建
硬盘坏了以前装的东西 装东西的时候还得现搜 所以决定写下来 以后可能用 到golang.org下载 安装包 如果被墙改host windows直接下载那个msi安装的 linux下载下来解压自己设置一下环境变量运行那个all.bash(好像是这个) 然后 在命令行运行输入go 输出帮助信息 就是安装成功了 下载sublime text2 安装sublime text 插件管理器 按CTRL+` 输入 import urllib2,os; pf='Package Control.su...阅读全文
golang时间处理
golang 时间处理 package main import ( "fmt" "time" ) const ( date = "2006-01-02" shortdate = "06-01-02" times = "15:04:02" shorttime = "15:04" datetime = "2006-01-02 15:04:02" newdatetime = "2006/01/02 15~04~02" newtime ...阅读全文
golang tips
回调函数的用法 //一个记录日志的类型:func(string) type saveLog func(msg string) //将字符串转换为int64,如果转换失败调用saveLog func stringToInt(s string, log saveLog) int64 { if value, err := strconv.ParseInt(s, 0, 0); err != nil { log(err.Error()) return 0 ...阅读全文
Go语言实战 - revel框架教程之MongDB的最佳搭档revmgo
由于revel框架本身对于model层的编写没有提供任何指导,所以在设计这部分的时候就有些犹豫,反复斟酌到底怎样才算是最佳实践。 我在做山坡网的时候刚开始也纠结了一下,拿不准mongodb的session的创建和销毁应该在什么地方处理。直到有一天看到了revmgo的作者在与revel的作者讨论(具体内容在这里),就去研究了下revmgo,之后立即就用它替换了我自己的实现。 先说下用法吧。 1. 在app.conf添加mongodb的连接字符串。 revmgo.dial = mong...阅读全文
go是函数式编程语言吗?
2012-05-19 翻译自这里, 对原文有所扩展, 也有所删减. go是函数式编程语言吗? 不是, 当然不是. 那么, go提供函数吗? 是的, 当然, 大多数编程语言都提供函数, go也不例外. 不相信吗? 我会用代码让你闭嘴: func SayHello() { fmt.Println("Hello") } 看见了吧. go使用关键字func定义函数, 并在函数体中编写函数逻辑. go函数可以接受参数吗? 嗯, 我又看到一个白痴的问题, 呵呵. 哦, 我懂了,...阅读全文
奇妙的go语言(聊天室的开发)
【 声明:版权全部,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 这是一篇关于聊天室开发的博客,原来文章的地址来自于此。这篇文章非常具有代表性,对于代码中的函数部分内容,不想多说什么,仅仅是对它的实现进行一些必要的解说。关于代码,大家既能够在这里阅读,也能够跳转到那篇博客,继续阅读。package main import( "fmt" "os" "net" ) ////////////////////////////////////////...阅读全文
位运算计算(go语言)
符号 二进制表示 十进制表示 0110 6 1011 11 & 0010 (上下都是1的话才是1,否则是0) 前后顺序不管,类似加法:1+2=2+1 2 | 1111 (上下都是0的话才是0,否则是1) 前后顺...阅读全文
google 短网址服务 -- Go 版
// urlshort package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "net/http" "os" ) type apiResponse struct { Id, Kind, LongUrl string } func main() { longUrl ...阅读全文
go map操作需要注意的地方
map 数据直接赋值,或者作为函数参数传递时是 指针传递, 修改其中一个则会修改全部变量数据 func main() { var s_map = make(map[int]int) for i := 0; i <= 5; i++ { s_map[i] = i } fmt.Println(s_map) s_map2 := s_map s_map2[10] = 100 fmt.Println(s_map) fmt.P...阅读全文
go产生平台相关的0xFFFF
一个网友问的,如何在64位机器上产生16个F,如何在32位机器产生8个F,当然要动态生成的,所以有了下面的代码: package main import ( "fmt" "strconv" ) func main() { size := strconv.IntSize value := uint(1<<uint(size) - 1) fmt.Println(value) }阅读全文
go语言 自定义 error
package main import ( "errors" "fmt" ) type data struct{} func (this *data) Error() string { return "" } func bad() bool { return true } //自定义错误返回函数 func test() error { var p *data = nil if bad() { return p } return nil } //只是返回错误非空 fu...阅读全文
golang手动管理内存
作者:John Graham-Cumming. 原文点击此处。翻译:Lubia Yang 前些天我介绍了我们对Lua的使用,implement our new Web Application Firewall. 另一种在CloudFlare (作者的公司)变得非常流行的语言是Golang。在过去,我写了一篇 how we use Go来介绍类似Railgun的网络服务的编写。 用Golang这样带GC的语言编写长期运行的网络服务有一个很大的挑战,那就是内存管理。 为...阅读全文
go语言channel的别样用法
1.返回值使用通道 func main() { // 生成随机数作为一个服务 randService := randGenerator() // 从服务中读取随机数并打印 fmt.Printf("%d\n",<-randService) } func randGenerator() chan int { // 创建通道 out := make(chan int) // 创建协程 go func() { for { ...阅读全文
go语言,变量引用的用法
package main import "fmt" func main() { //引用变量赋值 var a string afuzhi(&a) fmt.Println(a) fmt.Println("=========================") bianliang() } func afuzhi(b *string) { *b = "ccc" //fmt.Println(b) } func bianliang() { var a = [3]int{1, 2,...阅读全文
go语言解析INI文件
package main import ( "bufio" "bytes" "io" "os" "unicode" ) const ( stat_none = iota stat_group stat_key stat_value stat_comment ) type Attr struct { Name string Value string Comment string next *Attr }...阅读全文
解决github.com/mattn/go-sqlite3 驱动中的utc时区变为本地系统时...
今晚 在拿sqlite3来做个小demo,驱动用到github.com/mattn/go-sqlite3 发现 就算写入 time.now() 都不是本地时区,于是乎到github.com/mattn/go-sqlite3去查看代码,发现 https://github.com/mattn/go-sqlite3/blob/master/sqlite3.go#L324 这个链接里面高亮的 部分是utc ,最后解决办法是把自己本地源码的sqlite3.go 第324行改成一下: ...阅读全文