GO 语言错误处理
2016-12-27 20:16
946 查看
下载编译工具时package github.com/go-xorm/cmd/xorm: cannot download, $GOPATH not set. For more details see: go help gopath
用下面命令可解决sudo env GOPATH=/Volumes/work/go/fox:/Volumes/work/go/fox/bin go get github.com/go-xorm/cmd/xorm
1.invalid method expression service.AdminUser.Auth (needs pointer receiver: (*service.AdminUser).Auth)
指针只能使用指针方式调用service.AdminUser.Auth
要改为以下方式调用
(*service.AdminUser).Auth
2.invalid method expression service.AdminUser.Auth (needs pointer receiver: (*service.AdminUser).Auth)
改为如下调用var admUser *service.AdminUser admUser.Auth(xxx)
3.cannot use id (type int64) as type int in argument to models.GetAdminById
原因:int/uint 其值范围与平台有关,所以 int32 != int int64 != int
这里要使用 strconv.Atoi 自动转换
解决方法
int_id, _ := strconv.Atoi(uid) 这个时候在传入int_id models.GetAdminById(int_id)
4.Golang Struct 转 json 键名首字母小写
来源 https://www.zhihu.com/question/34447868//感谢大神们回答,为方便大家参考,我这里给个例子吧 package main import ( "encoding/json" "fmt" ) type ColorGroup struct { ID int `json:"id"` Name string `json:"name"` Colors []string `json:"colors"` } func main() { group := ColorGroup{ ID: 1, Name: "Reds", Colors: []string{"Crimson", "Red", "Ruby", "Maroon"}, } b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } fmt.Println(string(b)) }
5.Handler crashed with error runtime error: invalid memory address or nil pointer dereference
一般报这个错误原因
1.值为nil
解决方法
找到这个位置,值为nil 判断一下再输出或者赋值
5.cannot use str (type interface {}) as type string in argument to time.Parse: need type assertion
cannot use str (type interface {}) as type string in argument to time.Parse: need type assertion报错行
date, err = time.Parse(layout, string) 这一行报错 date = str 这一行报错
原函数
func Format(str interface{}, layout string) string { var date time.Time var err error //判断变量类型 switch str.(type) { case string: //如果是字符串则转换成 标准日期时间格式 fmt.Println(str) date, err = time.Parse(layout, string) if err != nil { return "" } case time.Time: date = str } return date.Format(layout) }
解决后函数
func Format(str interface{}, layout string) string { var date time.Time var err error //判断变量类型 switch str.(type) { case string: //如果是字符串则转换成 标准日期时间格式 fmt.Println(str) date, err = time.Parse(layout, str.(string)) if err != nil { return "" } case time.Time: date = str.(time.Time) } return date.Format(layout) }
6.cannot use tmp.Format(“2006-01-02 15:04:05”) (type string) as type time.Time in assignment
或者cannot use XXX (type string) as type XXXX in assignment
原因:
被你赋值的那个变量或结构体或者其他什么的,被你赋值的类型与要赋值的类型不符
解决:
类型转换,类型要一样才可以赋值
7.cannot use arr (type []string) as type []interface {} in argument to WhereAnd
原因:[]string不能直接转换为[]interface {}类型解决:
arr:=[]string{"A","B"} inter := make([]interface{}, arrCount) for y, x := range arr { inter[y] = x } func WhereAnd(value ...interface{}){ ..... }
相关文章推荐
- Go语言中的错误处理系统
- go语言学习笔记(10) 错误处理
- Go语言错误处理
- go语言之 panic, recover ——如何在go语言中优雅的处理错误
- Go语言基础入门--函数,错误处理
- Go语言中错误处理实例分析
- Go语言中更优雅的错误处理
- Go语言中的资源管理和错误处理
- Go语言中使用panic和recover简化错误处理
- Go语言错误处理
- GO语言标准错误处理机制error用法实例
- Go语言错误处理小例子
- Go 语言的错误处理机制引发争议
- 翻译golang的一篇文章-Go 语言的错误处理
- Go语言错误处理
- Go语言学习九:接口、错误处理
- 如何处理C++构造函数中的错误——兼谈不同语言的错误处理
- 【Go语言】错误与异常处理机制
- Go语言常用字符串处理方法实例汇总
- C语言linux下实现多语言以及错误处理