其实个人之前对Go有一定关注和接触,只是还没有开始学习和尝试,在寻找好的SQL转ES查询语句工具的过程中,发现了Go语言写的elasticsql
,遂决定看看Go语言。
Go 语言环境安装
- Windows使用命令行添加环境变量:
set path=%path%;C:\Go\bin\
; go help
,查看是否安装成功;-
第一个demo:
// test.go package main import "fmt" func main() { fmt.Println("Hello, World!") }
- 执行:进入文件目录,
go run test.go
,输出Hello, World!
。
Go by Example
Go by Example 是一个实践性的教程,通过带注释的程序实例去学习 Go 语言。其实官网也提供了很多示例程序和The Go Playground供学习和在线学习运行程序。
- Type Switch:Go 语言中一种特殊的 switch 语句,它比较的是类型而不是具体的值。它判断某个接口变量的类型,然后根据具体类型再做相应处理。
whatAmI := func(i interface{}) { switch t := i.(type) { case bool: fmt.Println("I'm a bool") case int: fmt.Println("I'm an int") default: fmt.Printf("Don't know type %T\n", t) } } whatAmI(true) // I'm a bool whatAmI(1) // I'm an int whatAmI("hey") // Don't know type string
实践——SQL转ES查询语句
go get -u github.com/cch123/elasticsql
-
Demo:
// elasticsql.go package main import ( "fmt" "github.com/cch123/elasticsql" ) var sql = ` select * from someIndex where a=1 and x = '云计算' and create_time between '2015-01-01T00:00:00+0800' and '2016-01-01T00:00:00+0800' and process_id > 1 order by id desc limit 100,10 ` func main() { dsl, esType, _ := elasticsql.Convert(sql) fmt.Println(dsl) fmt.Println(esType) }
- 运行
go run elasticsql.go
,生成ES查询语句。 - 运行
go build elasticsql.go
,编译构建Go可执行程序。