数据库工具
xorm
http://www.xorm.io/
https://github.com/go-xorm/xorm/
xormplus
https://github.com/xormplus/xorm
golang 配置工具 TOML
https://github.com/toml-lang/toml
配置文件的使用由来已久,从.ini、XML、JSON、YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升。 TOML是前GitHub CEO, Tom Preston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。TOML被设计为可以无二义性的转换为一个哈希表(Hash table)
案例
title = "TOML Example"
[owner]
name = "Lance Uppercut"
dob = 1979-05-27T07:32:00-08:00 # 日期是一等公民
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
#你可以使用空格、制表符进行缩进,或者根本不缩进。TOML不关心缩进。
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# 数组内可以混入换行符
hosts = [
"alpha",
"omega"
]
规格
TOML是大小写敏感的。
TOML文件必须只包含UTF-8编码的Unicode字符。
空格是指制表符(0x09) 或空格 (0x20)。
换行符是指LF(0x0A)或CRLF (0x0D0A).
注释
用符号#来表示注释:
# I am a comment. Hear me roar. Roar.
key = "value" # Yeah, you can do this.
更多请看
https://github.com/toml-lang/toml/blob/master/versions/cn/toml-v0.4.0.md
项目收藏
https://www.cnblogs.com/52php/p/6060104.html
https://studygolang.com/articles/7708
https://github.com/avelino/awesome-go 整理了常见的 Go 框架或代码库 (感谢他)
golang 包搜索
golang 官方维护了一个基于go语言的开源项目列表
https://github.com/golang/go/wiki/Projects
1.初始化
风.fox
未进行初始化的变量都会被初始化为该类型的“零值”
// 先定义结构体
type User struct {
Name string
Age int
}
// 再初始化结构体
这两个初始化是相同的
u1 := new(User)
u2 := &User{}
以下初始化也是相同的
u3 := &User{"小薇", 20}
u4 := &User{Name:"小薇", Age:20}
// 定义和初始化同时进行
U5 := &UserProfile{Address string, Sex string}{"深圳", "女"}
new 返回是一个指针
这两个初始化是相同的
u1 := new(User)
u2 := &User{}
以下返回的是一个User类型
u2 := User{}
go import 包的导入语法 特殊的几种说明
来自:https://studygolang.com/articles/4580
go import 下划线
import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数
go import 点操作
这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”) 可以省略的写成Println(“hello world”)
go import 别名操作
别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字
import( f "fmt" )
别名操作调用包函数时前缀变成了重命名的前缀,即f.Println("hello world")