#Go# 点滴积累
此篇仅为不断记录趟过的坑
StringToTimestamp
import (
	"time"
)
const TimeFormat = "2006-01-02T15:04:05.000000Z"
func StringToTimestamp(dateString string) (int64, error) {
	theTime, err := time.ParseInLocation(TimeFormat, dateString, time.UTC)
	if err != nil {
		return 0, err
	}
	sr := theTime.Unix()
	return sr, nil
}
代码来源于华为SDK
Redigo
使用hmset进行Do操作时,如果是多个参数,可以写成一句,例如
redis.Do("hmset", key, value1, value2, value3, ...)
如果不知道有几个参数怎么办,用切片
slice := make([]interface{}, 0)
slice = append(slice, value1, value2, value3, ...)
redis.Do("hmset", slice)
需要注意的是,由于使用了切片作为容器传递多个参数给 hmset,所以切片的第一个值应给是 key 值,从第2个开始是真正的键值对
go-mysql
导入时使用以下方式
"database/sql"
_ "github.com/go-sql-driver/mysql"
编译时如果没有下载 mysql 包是会提示没有导入?,使用 go get 下载下来
go get github.com/go-sql-driver/mysql
使用通用驱动接口 sql.DB 作为驱动操作的接口,因此声明一个 var Db *sql.DB 的全局变量来使用,并使用其进行数据操作
type User struct {
	Id int
	Name string
	Password string
}
var Db *sql.DB
func main() {
    // 数据连接的通用格式: user:password@tcp(host:port)/dbname?params
	dsn := "xxx:xxx@tcp(192.168.0.160:3306)/mydata?charset=utf8mb4"
	Db, err := sql.Open("mysql", dsn)
	if err != nil {
		fmt.Printf("MySql connect error: %v\n", err)
		return
	}
	defer func() {
		Db.Close()
		fmt.Println("GoodBye, Db Closed")
	}()
	fmt.Println("MySql connected")
	sqlString := "SELECT * FROM `users` LIMIT 0,1"
	user := User{}
	err = Db.QueryRow(sqlString).Scan(&user.Id, &user.Name, &user.Password)
	if err != nil {
		fmt.Printf("Db Query [%v] error: %v\n", sqlString, err)
		return
	}
	fmt.Printf("Id: %v, Name: %v, Password: %v\n", user.Id, user.Name, user.Password)
}
http:HandleFunc 的时候,别忘了处理 /favicon.ico
当浏览器请求服务的时候,总是会请求 /favicon.ico 造成额外的请求
因此,一定要加入对此路径的处理,否则当浏览器进行请求时,就会额外增加对此资源的请求,如果未加处理,就会造成404或其它意外结果。
http.HandleFunc("/", common.X404)
http.HandleFunc("/favicon.ico", common.Favicon)
http.HandleFunc("/register", user.Register)
...some else
传地址,而不是变量
描述:fmt.Scanln 语句不能停下接受输入
解决:当参数是变量时,要传递地址(指针),而不是变量名。传指针是因为函数会把输入结果按照变量的地址放进去,从而更改变量的值,反之,输入结果会生成一个接收不到的新变量,和作为参数传递进来的变量没有关系。
线索:func Scanln 返回值是 count 和 error,如果不传递指针没有返回变量值的地方
感谢:Go语言技术交流群 @给我一杯酒
langString :=""
inputString := ""
fmt.Scanln(&langString, &inputString)
												
											#Go# 点滴积累的更多相关文章
- 【点滴积累】通过特性(Attribute)为枚举添加更多的信息
		
转:http://www.cnblogs.com/IPrograming/archive/2013/05/26/Enum_DescriptionAttribute.html [点滴积累]通过特性(At ...
 - 移动前端webApp开发点滴积累20140629
		
#移动前端webApp开发点滴积累20140629 ##关于input行内居中的问题 给input设定一个比较高的高度,在某些版本的移动设备上,文字不能垂直居中,即使设定了相同的行高也不行.(见图) ...
 - Vim编辑器点滴积累
		
Vim编辑器点滴积累 vim tab键空格数量控制 参考链接 临时:进入VIM,执行: :set tabstop=4 永久:编辑用户目录下.vimrc文件,添加:set tabstop=4 vim 安 ...
 - sql查询学习和实践点滴积累
		
https://blog.rjmetrics.com/2008/10/28/correlated-subqueries-in-mysql/ http://www.mysqltutorial.org/m ...
 - Excel 点滴积累
		
1.Excel中截取邮件@之后的字符 MID(text, start_num, num_chars) FIND(find_text,within_text,start_num) Right(strin ...
 - 【点滴积累,厚积薄发】windows schedule task中.exe程序的路径问题等问题总结
		
1.在发布ReportMgmt的Job时遇到一个路径问题,代码如下: doc.Load(@"Configuration\Business\business.config"); ...
 - 【点滴积累,厚积薄发】windows schedule task的最小时间间隔是多少?
		
在一些业务系统中,经常会出现一些需要定时运行的任务,业界已有很多优秀的选择,比如windows schedule task,Quartz等等.在以前在新蛋的时候用的是内部封装的JobConsole,非 ...
 - 【点滴积累,厚积薄发】修改hosts,并刷新dns缓存
		
Windows系统下hosts位置 C:\Windows\System32\drivers\etc 修改hosts后,要想马上生效,需要运行命令来刷新DNS缓存:ipconfig /flushdns
 - linux的点滴积累
		
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #839496; background-color: rgba(1 ...
 - Linux命令点滴积累
		
1.批量删除当前目录及子目录中指定类型的文件: [root@localhost logs]# find ./ -name *.bak | xargs rm -rf [root@localhost lo ...
 
随机推荐
- 如何用Python实现常见机器学习算法-4
			
四.SVM支持向量机 1.代价函数 在逻辑回归中,我们的代价为: 其中: 如图所示,如果y=1,cost代价函数如图所示 我们想让,即z>>0,这样的话cost代价函数才会趋于最小(这正是 ...
 - Mac Sublime Text  浏览器  设置快捷键   让html文件在浏览器打开
			
首先,进入命令行界面(这里mac和windows一样) 应用命令下载插件 输入命令二 然后就会发现在工具栏多出一个下拉选项 mac的跟它有些区别就是快捷键 mac快捷键是^+√+ V ++字母V,就会 ...
 - ORACLE EBS中查看系统已经打过的补丁
			
SELECT COUNT (BUG_NUMBER) FROM AD_BUGS WHERE BUG_NUMBER LIKE '%7303031%' --对应 patch号 ; --TABLESAD_ ...
 - 如何修改TFS 2013中工作项附件大小限制
			
默认情况下,TFS工作项的附件大小限制为4MB.我们可以通过调用TFS提供的Web Service将这个限制调整最高到2GB. 调整这个设置的必备条件是你需要拥有TFS应用层管理员的权限.下面来看看如 ...
 - [Erlang31]Erlang trace总结
			
在一个并行的世界里面,我们很难做到单步断点调试来定位问题(太多的消息飞来飞去),Erlang设计者也深刻体会到这一点,推出了另一个trace机制. 通过这个trace,你可以: .特定进程集内的函数调 ...
 - shell中调用jenkins API批量运行历史任务
			
shell中调用jenkins API批量运行jenkins带参数的任务: #!/bin/sh #startdate=20150127 startdate=20150201 while [ " ...
 - LINQ to Entities 查询中的标准查询运算符
			
投影和筛选方法 投影指的是转换的结果集到所需的窗体中的元素. 例如,可以从结果集中的每个对象投影所需的属性子集,可以投影一个属性并对其执行数学计算,也可以从结果集投影整个对象. 投影方法有 Selec ...
 - Android阻止AlertDialog关闭
			
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("测试" ...
 - Jquery  记一次使用fullcalendar的使用记录
			
最近接了一个需求,把excel做的表格开发到系统里,本来想直接做成表格的形式,后来考虑到数据库中的表结构不好设计,最后决定做成日历的形式: 先上成品图 需要引用的js,fullcalendar官网可以 ...
 - DOORS的引用类型
			
DOORS的引用类型包括:Project: 项目引用Folder: 文件夹引用Item: 项目或文件夹之内的项(项目.文件夹.模块)Module: 打开模块的引用Object: 对象的引用 ...