go语言工程约定,分包和编译
go-lang已经发布了go1,前段时间看了一下go语言的教程,就喜欢上了这门语言,但使用多个文件编译是碰到一些麻烦,引用出错编译通不过,google之找到了这篇教程https://golang.org/doc/code.html,我按自己的理解记录一下,英文好的童鞋还是看原文吧! go语言可以用makefile,也可以按他的约定来直接编译。约定其实比较简单,go语言是这么来配置他的工程的 prjDir # 工程根目录 bin/ hello ...阅读全文
golang里channel的实现原理
channel是消息传递的机制,用于多线程环境下lock free synchronization. 它同时具备2个特性: 1. 消息传递 2. 同步 golang里的channel的性能,可以参考前一篇:http://blog.sina.com.cn/s/blog_630c58cb01016xur.html 此外,自带的runtime package里已经提供了benchmark代码,可以运行下面的命令查看其性能: go test -v -test.bench=".*" runtime 在我的...阅读全文
Go语言的国际化支持(基于gettext-go)
本文在 Golang中国博客 的地址: http://blog.go-china.org/07-gettext hello, world! 假设有以下的程序, 输出: “Hello, world!“. package main import ( "fmt" ) func main() { fmt.Println("Hello, world!") } 现在要让改程序支持不同语言的用户, 然后以本地语言输出相同意思的信息. 这就是很多程序面临的国际化问题. Go语言...阅读全文
go语言的php cgi执行程序
/* PHP FactCGI Remote Code Execute Exploit * Date: 2012-09-15 * Author: wofeiwo@80sec.com * Affected: All PHP-FPM exposed outsie, but "system" cmd only affects >=5.3.3 * !!Note: Only for research purpose!! * Usage: * First use nmap. * $nmap -sV -p 90...阅读全文
我第1个可用的golang小程序
为什么要写这个程序 寻找时间同步Api 编写同步程序 封装成windows service 为什么要写这个程序 一直在关注golang, 从2011年4月配置环境写了个hello world!(http://weibo.com/1409046677/wr4n3vdYFV), 后来没再动手写golang代码了, 只是关注golang方面的信息/资讯。去年到今年稍认真的看了一些golang的基础语法,然后前几天家里的台式电脑又开机用了一下,可能是bios电池没电的原因吧, 总...阅读全文
Golang 1.0 文档使用。godoc ,go 命令 学习 ,本地运行 gotour
首先要安装环境 参考: http://toeo.iteye.com/blog/1470598 找了半天 没有 看明白 doc 的目录结构。 原来 doc 是web 展示的 !!! 本地 运行 web 版本 doc文档 输入 > godoc -http=:6060 然后在浏览器里面就可以看到了: 访问你的浏览器年 就有自己的一个 本地 文档中心了。 google go 毫不吝啬。golang.org 上面的文档相关东西都 本地化了。直接在w...阅读全文
关于golang中包(package)的二三事儿
golang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应。 golang的package的特点: 1、go的package不局限于一个文件,可以由多个文件组成。 组成一个package的多个文件,编译后实际上和一个文件类似,组成包的不同文件相互之间可以直接引用变量和函数,不论是否导出; 因此,组成包的多个文件中不能有相同的全局变量和函数(这里有一个例外就是包的初始化函数:init函数,下面还有讨论) 2、go不要求package的名称和所在目录名相同,但是你最好保...阅读全文
使用go build 进行条件编译
当我们编写的go代码依赖特定平台或者cpu架构的时候,我们需要给出不同的实现 C语言有预处理器,可以通过宏或者#define包含特定平台指定的代码进行编译 但是Go没有预处理器,他是通过 go/build包 里定义的tags和命名约定来让Go的包可以管理不同平台的代码 这篇文章将讲述Go的条件编译系统是如何实现的,并且通过实例来说明如何使用 1. 预备知识:go list命令的使用 在讲条件编译之前需要了解go list的简单用法 go list访问源文件里那些能够影响编译进程内...阅读全文
mac上golang编译出现clang错误
错误现象 几周前,突然发现我的go 项目编译开始报一种以前从来没有出现过的错误: # runtime/cgo clang: warning: argument unused during compilation: '-pthread' # runtime/cgo clang: error: no such file or directory: 'libgcc.a' 需要说明下:我的开发机器是mac mini,系统当时是10.8.5, 上周升级为mavericks。 问题进一步探索 刚出现时我有...阅读全文
golang的缓冲channel和无缓冲channel的区别
话说golang的channel同步的定义真是让人无力吐槽,码农的用户体验就这么难搞么,超耐磨阿,无缓冲和缓冲居然有这么大区别。。。。靠 转载一段网上的资料 -------------------------------------------------------------------------------------------------------------------------------------------------------- golang channel 有...阅读全文
golang中map的值引用问题
先给出一个例子 package mainimport ( "fmt")type string_map map[string][]stringfunc main() { map1 := make(string_map) map1["one"] = []string{"one"} //先赋值 one := map1["one"] //把赋值的映射使用一个变量表示 one = []string{"two"} //给这个变量赋另...阅读全文
睡眠排序--go实现
一次偶然的机会看见了睡眠排序,很有意思的一种排序算法,可以说是对我们熟悉的正规排序的一种挑战,是思想上的突破,有点像脑筋急转弯。使用睡眠排序算法,只能按照从小到大的顺序排列。打印数组中的数据时,按照其大小sleep,这样,数越大sleep的时间也就越长。所有的数同时进入sleep状态,数比较小的会提前打印出来。近期使用的都是GO语言,对其并发也有了些许理解,所以,使用go语言来实现这种排序,是很不错的选择。 // test project main.go package main import...阅读全文
golang连接mysql数据库进行查询
golang连接mysql数据库,经过各种报错,目前已经顺利连接成功。 代码: 1 package main 2 3 import ( 4 "database/sql" 5 "fmt" 6 _ "github.com/go-sql-driver/mysql" 7 ) 8 9 func main() { 10 db, err := sql.Open("mysql", "root:1234567890@/test?charset=utf8") ...阅读全文
go语言 Hello World
go语言是google发布的编程语言,已经有了第一个正式版本 go编译速度很快,是编译型语言 hello.go package main import "fmt" func main() { fmt.Printf("Hello,World!") }运行结果: package main 是指go文件的开头标志 import "fmt" I/O库,是将fmt库加载到文件中来 func main() go程序执行的第一个函数 fmt.Printf fmt库中的输出语句阅读全文
go1.1beta1 released [go-nuts]
From: Andrew Gerrand Hi Go nuts, We have just released go1.1beta1, a test version of Go 1.1 cut from the default branch at revision 267bb9854177. This is not a release candidate: We are still finalizing some details and tracking down a couple more...阅读全文
Ubuntu go语言环境
Ubuntu安装Go: sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable 或 sudo apt-get install golang 或者直接下载go语言安装包 环境配置: vi /etc/profile 加入 export GOROOT=/usr/lib/go export GOARCH=386 export GOOS=linux export GOPAT...阅读全文
写了个golang版的python的cmd package
https://github.com/funkygao/cmd 里面有例子,目前还不支持readline(通过tab autocomplete)阅读全文