Go语言学习的坑爹历程
鄙人暑期实习,需要用Go语言进行编程
在go语言中,结构体的定义只支持变量的声明,成员函数是采用“接口方法”来实现的
留一个成员定义的模板在此
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package main import ( "fmt" "math" ) type point struct { x float64 y float64 } func (pt point) getDistance() float64 { return math.Sqrt(pt.x*pt.x + pt.y*pt.y) } func main() { pointA := point{3, 4} fmt.Println(pointA.getDistance()) } |
map[string]interface{}转struct代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package main import ( "fmt" "github.com/mitchellh/mapstructure" ) type student struct { id int `json: "id" ` Name string `json: "name" ` Adress [] string `json: "adress" ` } func main() { val := map[ string ] interface {}{ "id" :1, "name" : "xiaoming" , "adress" :[] string { "beijing" , "nanjing" }, } stu := student{} err := mapstructure.Decode(val,&stu) if err != nil { fmt.Println(err.Error()) } fmt.Println( "val:" ) fmt.Println(val) fmt.Println( "struct:" ) fmt.Println(stu) } |
gorm通过结构体实现CRUD的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package main import ( "fmt" "github.com/mitchellh/mapstructure" "gorm.io/driver/mysql" "gorm.io/gorm" ) //大小写的坑!!!!!! type User struct { Id int32 `gorm: "column:id;primary_key" ` Name string `gorm: "column:name" ` } func AddToDB(id int32, name string) { user := User{ Id: id, Name: name, } fmt.Println( "user = " , user) DB.Table( "test_table" ).Create(&user) } var DB *gorm.DB var err error func RemoveFromDB() { //支持移除多个 DB.Table( "test_table" ).Where( "id<=?" , 102).Delete(nil) } func UpdateFromDB_new() { var need_modify = User{104, "modify2" } DB.Table( "test_table" ).Where( "id<=104" ).Updates(need_modify) } func main() { DB, err = gorm.Open(mysql.New(mysql.Config{ //root表示数据库账号,:和@中间是密码(这里没有设置) //tcp中间的地址和端口表示连接的数据库的ip地址和端口 //localtest_alpahinf表示当前选择的数据库名 //其余信息喂默认信息 DSN: "root:@tcp(127.0.0.1:3306)/localtest_alphainf?charset=utf8mb4&parseTime=True&loc=Local" , }), ) //AddToDB(1234, "alphainf") //AddToDB(114, "beta") //AddToDB(104, "orzlyy") UpdateFromDB_new() mp := make( map [string] interface {}) DB.Table( "test_table" ).Where( "id = 114" ).Find(mp) now := User{} mapstructure.Decode(mp, &now) fmt.Println(now) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!