GopherChina大会门票多了一张, 转手, 要的联系

回复

线下活动FancyGo 发起了问题 • 1 人关注 • 0 个回复 • 136 次浏览 • 6 天前 • 来自相关话题

关于go_plinq代码中遇到的问题

有问必答fenghai_hhf 回复了问题 • 4 人关注 • 5 个回复 • 145 次浏览 • 6 天前 • 来自相关话题

不同方式导引代码导致一个变量有两个地址

有问必答toyijiu 回复了问题 • 3 人关注 • 2 个回复 • 129 次浏览 • 6 天前 • 来自相关话题

orm初探

文章分享elvin5 发表了文章 • 0 个评论 • 116 次浏览 • 6 天前 • 来自相关话题

只是研究一下orm是怎么事情而已矣

package main

import (
    "database/sql"
    "fmt"
    "log"
   ... 			查看全部
					

只是研究一下orm是怎么事情而已矣


package main

import (
"database/sql"
"fmt"
"log"
"reflect"
"strconv"

_ "github.com/go-sql-driver/mysql"
)

var db *sql.DB

func init() {
log.SetFlags(log.Lshortfile)
var err error
db, err = sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test?charset=utf8mb4")
if nil != err {
log.Fatal(err)
}

db.SetMaxOpenConns(150)
db.SetMaxIdleConns(100)
err = db.Ping()
if nil != err {
log.Fatal(err)
}
}

func main() {
res, err := Query()
if nil != err {
log.Println(err)
return
}
var t T2
err = GetOne(res[0], &t)
if nil != err {
log.Println(err)
return
}
log.Printf("%+v",t)
}

type T2 struct {
Id int `json:"id" db:"id"`
Name string `json:"name" db:"name"`
Ct string `json:"ct" db:"ct"`
UpdatedAt string `json:"updated_at" db:"updated_at"`
Bt byte `json:"bt" db:"bt"`
}

func Query() ([]map[string]string, error) {
rows, err := db.Query("SELECT * FROM t2")
if nil != err {
log.Println(err)
return nil, err
}

columns, _ := rows.Columns()
scanArgs := make([]interface{}, len(columns))
values := make([]interface{}, len(columns))
for j := range values {
scanArgs[j] = &values[j]
}

record := make([]map[string]string, 0)
for rows.Next() {
//将行数据保存到record字典
err = rows.Scan(scanArgs...)
m := map[string]string{}
for i, col := range values {
if col != nil {
m[columns[i]] = string(col.([]byte))
}
}

record = append(record, m)
}

fmt.Printf("%+v\n", record)

return record, nil
}

func GetOne(m map[string]string, v interface{}) error {
tp := reflect.TypeOf(v)
val := reflect.ValueOf(v)

length := tp.Elem().NumField()
for i := 0; i < length; i++ {
dbTag := tp.Elem().Field(i).Tag.Get("db")
if "" == dbTag || "-" == dbTag {
continue
}

val2, ok := m[dbTag]
if !ok {
continue
}

switch tp.Elem().Field(i).Type.Kind() {
case reflect.String:
val.Elem().Field(i).SetString(val2)
case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16:
val3, err := strconv.ParseInt(val2, 10, 64)
if nil != err {
log.Println(err)
continue
}
val.Elem().Field(i).SetInt(val3)
case reflect.Float32, reflect.Float64:
case reflect.Bool:
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
default:
}
}

return nil
}

我要找GO社区的管理,聊点事情

站点反馈seeyoup 回复了问题 • 39 人关注 • 38 个回复 • 1585 次浏览 • 2017-03-19 18:29 • 来自相关话题

寻 Go 开源运维监控系统

有问必答ansin 回复了问题 • 6 人关注 • 3 个回复 • 334 次浏览 • 2017-03-17 14:02 • 来自相关话题

关于negroni框架的一些疑惑

有问必答傅小黑 回复了问题 • 2 人关注 • 1 个回复 • 205 次浏览 • 2017-03-17 11:48 • 来自相关话题

Go语言跨平台GUI自动化系统(模拟鼠标键盘和控制bitmap窗口以及屏幕以及全局事件监听)

开源程序veni 回复了问题 • 14 人关注 • 13 个回复 • 1561 次浏览 • 2017-03-17 01:01 • 来自相关话题

golang的三方包管理依赖

有问必答caibirdme 回复了问题 • 3 人关注 • 2 个回复 • 225 次浏览 • 2017-03-16 17:28 • 来自相关话题

go get 报i/o timeout错误

技术讨论willian 回复了问题 • 3 人关注 • 2 个回复 • 579 次浏览 • 2017-03-16 11:02 • 来自相关话题

beego 1.8.0 版本发布了?

有问必答kaixinmao 回复了问题 • 2 人关注 • 1 个回复 • 178 次浏览 • 2017-03-16 09:49 • 来自相关话题

Go之旅-Switch

文章分享frankphper 发表了文章 • 0 个评论 • 115 次浏览 • 2017-03-15 22:51 • 来自相关话题

Go之旅-Switch

switch支持初始化语句,注意要用分号结束。后跟条件表达式,如果省略条件表达式,默认为true。不需要显示执行break语句,case执行完毕后自动终端。多个匹配条件,其中一个条件符合即可。case执行中断后,... 查看全部

Go之旅-Switch


switch支持初始化语句,注意要用分号结束。后跟条件表达式,如果省略条件表达式,默认为true。不需要显示执行break语句,case执行完毕后自动终端。多个匹配条件,其中一个条件符合即可。case执行中断后,如果需要继续执行下一个case块的内容,在下一个case块结尾执行fallthrough并且可以在fallthrough前使用break语句阻止。但不继续继续后续case块。


package main

import (
"fmt"
)

func main() {
// 简单声明几个变量
a, b, c, d := 1, 2, 3, 4
switch x := 2; x { // switch支持初始化语句,注意要用分号结束。后跟条件表达式,如果省略条件表达式,默认为true。
case a:
fmt.Println("a")
// break // 不需要显示执行break语句,case执行完毕后自动终端。
case a, b: // 多个匹配条件,其中一个条件符合即可。
fmt.Println("b")
fallthrough // case执行中断后,如果需要继续执行下一个case块的内容,在下一个case块结尾执行fallthrough并且可以在fallthrough前使用break语句阻止。但不继续继续后续case块。
case c:
fmt.Println("c")
case d:
fmt.Println("d")
case 5:
fmt.Println("e")
//case 5, 6: // 支持常量,但不能出现重复常量
// fmt.Println("f")
default:
fmt.Println("x") // 只有全部匹配失败后,才会执行default块。
}
}

Glide error 求解

有问必答cookedsteak 回复了问题 • 3 人关注 • 2 个回复 • 304 次浏览 • 2017-03-15 17:06 • 来自相关话题

go http request reader 内存不释放 大神来分析分析

技术讨论lwt 回复了问题 • 2 人关注 • 3 个回复 • 238 次浏览 • 2017-03-15 16:33 • 来自相关话题

Linux下使用syscall包 提示undefined: syscall.NewLazyDLL

有问必答fanyang 回复了问题 • 2 人关注 • 1 个回复 • 119 次浏览 • 2017-03-15 15:35 • 来自相关话题