go
我要努力向上
golang
展开
-
[GO] json字符串与struct、map的相互转换
json字符串与struct、map的相互转换是业务开发中非常常用的,需要好好总结:json和struct的转换package mainimport ( "encoding/json" "github.com/davecgh/go-spew/spew")type User struct { Name string Age int}func main() { user := User{ Name: "王思聪", Age: 20, } // struct 转 json原创 2021-10-23 17:46:58 · 438 阅读 · 0 评论 -
[GO] 日期格式转换
日期格式转换将时间字符串转时间戳 str to timestamptime.ParseInLocation// 将时间字符串转换为时间戳func Str2Time(timeStr string) time.Time { timeTpl := "2006-01-02 15:04:05" t, _ := time.ParseInLocation(timeTpl, timeStr, time.Local) return t}时间戳转时间字符串 timestamp to strtime.Uni原创 2021-07-26 22:55:35 · 629 阅读 · 0 评论 -
[GO] 字符串的比较
区分大小写:“==”strings.Compare()不区分大小写:strings.Compare()strings.EqualFold() 推荐package mainimport ( "fmt" "strings")// 字符串的比较func main() { s1 := "Chinese" s2 := "CHINESE" // 1. 区分大小写 // 1.1 使用“==” if s1 == s2 { // s1不等于s2 fmt.Println("原创 2021-10-21 14:34:37 · 241 阅读 · 0 评论 -
[GO]类型断言
类型断言GO的类型断言,是一个使用在接口值上面的操作,检查接口变量的值是否实现了期望的接口或者具体的类型。// +build ignorepackage mainimport ( "fmt")type a1 interface{ f2()}type s1 struct{}func (s *s1) f2() {}func main() { var x interface{} x = new(s1) // 类型断言 判断接口变量x的值是否实现了a1接口 if v原创 2021-07-08 11:13:02 · 370 阅读 · 0 评论 -
[GO]接口的nil判断
GO的nil判断GO的接口底层有两个部分:type和data,只有type和data都为nil,这个接口与nil作“==”比较,结果才为nil。// +build ignorepackage mainimport ( "fmt")// nil在Go语言中只能被赋值给 指针 和 接口 func main() { var p *int = nil // nil赋值给指针 var i myinterface = nil fmt.Printf("p的值为:%v,i的值为:%v\n",p原创 2021-07-08 04:04:34 · 787 阅读 · 0 评论 -
[GO] 普通切片转换为interface{}切片
b := make([]interface{}, len(a))for i := range a { b[i] = a[i]}原创 2021-09-16 15:05:36 · 938 阅读 · 0 评论 -
[GO]类型与接口的关系&&接口的嵌套
GO类型与接口的关系一个类型实现多个接口比如一个io类型的struct需要同时具备读和写的功能,因此需要实现多个接口(读和写接口)// +build ignorepackage main// 一个类型实现多个接口import ( "fmt")type mywriter interface { write()}type myreader interface { read()}type socket struct {}func (d *socket) write()原创 2021-07-08 12:07:19 · 267 阅读 · 0 评论 -
[GO]接口
interface接口被实现的条件接口被实现的条件有二:接口方法和实现的方法的格式一致(方法名、参数列表、返回值列表);接口的所有方法都被某个struct实现。// +build ignorepackage mainimport ( "fmt")type myWriter interface { Write(data interface{}) error}type writer struct {}// *writer实现myWriter接口func (w *wr原创 2021-07-08 03:30:03 · 146 阅读 · 0 评论 -
[GO] GORM的CURD模板
最近使用gorm做业务开发,为了更加高效地开发,做如下总结:GormCURD模板查user := User{ Name: "drs", Age: 20,}db.Find(&user)db.Select("Name").Find(&user)增user := User{ Name: "drs", Age: 20,}// 直接创建db.Create(&user)// 使用Select选择结构体字段,进行创建db.Select原创 2021-10-22 11:17:03 · 440 阅读 · 0 评论 -
[GO] gorm的字段标签
字段标签也就是结构体字段右边的 gorm:"primaryKey"和gorm:"index",primaryKey和index就是gorm的标签名。// gorm.Model 的定义type Model struct { ID uint `gorm:"primaryKey"` DeletedAt gorm.DeletedAt `gorm:"index"`}声明 model 时,tag 是可选的,GORM 支持以下 tag: tag 名大小写不敏感,但建议原创 2021-07-30 11:33:20 · 4757 阅读 · 1 评论 -
[GO] gorm批量操作
批量查询gorm有封装批量创建的方法FindInBatches,但毕竟复杂,之后再研究研究。使用IN关键字,根据切片来进行批量查询// 根据goodIds批量查询商品// 设Goods为已有结构体var goods []Goodsapp.Db.Debug().Model(&Goods{}).Where("good_id in (?)", goodIds).Find(&goods)批量创建gorm有封装批量创建的方法CreateInBatches// 定义func (db原创 2021-07-30 11:07:24 · 12888 阅读 · 0 评论 -
[GO] beego.controller中Ctx.Input里的方法总结
beego.Info(u.Ctx.Input.Protocol()) //获取用户请求的协议:HTTP/1.1 beego.Info(u.Ctx.Input.URI()) //用户请求的RequestURI: /v1/apptodayRpt/UpALL beego.Info(u.Ctx.Input.URL()) //请求的URL地址: /v1/apptodayRpt/UpALL beego.Info(u.Ctx.Input.Scheme()) //请求的 scheme: http/https b.原创 2021-10-21 14:38:34 · 1251 阅读 · 0 评论 -
[GO] 内嵌结构体成员名字冲突 gorm映射错误问题
开发的时候经常会碰到两个已经定义好的struct里含有一模一样的字段,比如下面的A和B含有的Status字段,他们的字段标签都是一致的!如果单表查询不会有什么问题,但是联表查询的时候就会出问题了,gorm的无法正确映射到对应的值上面去。下面来复现一下该问题:A和B都有一样的字段:Statustype A struct { AId int64 `json:"aid" form:"aid"` Status int `json:"status" form:"status"` }ty原创 2021-08-11 11:47:31 · 1107 阅读 · 1 评论