我正在尝试创建一个以mysql rows.Scan函数需要的方式转换结构的函数,因此我不需要手动传递大量参数.
注意:我知道sqlx的存在以及在每个指针的单独行中手动编写的替代方法,但是我想以这种方式解决它,因为我正在学习并想要了解正在发生的事情.
我用这个解决方案得到的错误是:
panic: sql: Scan error on column index 0: destination not a pointer
对我来说看起来valueField.Addr().Pointer()应该是一个指向价值的指针.以下是我的代码的简化.
type User struct {
Name string
Age int
}
func StrutForScan(u interface{}) []interface{} {
val := reflect.ValueOf(u).Elem()
v := make([]interface{}, val.NumField())
for i := 0; i < val.NumField(); i++ {
valueField := val.Field(i)
v[i] = valueField.Addr().Pointer()
}
return v
}
func ListUsers {
rows, err := db.Query("SELECT * FROM users")
PanicIf(err)
var user User
for rows.Next() {
err := rows.Scan(StrutForScan(&user)...)
PanicIf(err) …Run Code Online (Sandbox Code Playgroud) 我想直接从包中公开一个函数.
所以我可以直接调用我的包而不是mypackage.Somepublic()方法.
package main
import (
"mypackage"
"fmt"
)
func main() {
var result = mypackage()
fmt.Println(result)
}
Run Code Online (Sandbox Code Playgroud)
例如,在node.js中,您可以公开匿名函数
module.export = function() {
console.log('ta da!');
}
Run Code Online (Sandbox Code Playgroud)
或一个物体
module.export = {
doMagic: function() {
console.log('ta da!');
}
};
Run Code Online (Sandbox Code Playgroud) 我有一个文件,其中包含使用 mongodb mongoexport 命令导出的以下数据:
mongoexport --db mydb --collection Users --out Users.json --jsonArray --journal
Run Code Online (Sandbox Code Playgroud)
Users.json 包含:
[
{
"_id" : { "$oid" : "53c3e81ebb593fe827040ef7" },
"email" : "one@email.com",
"password" : "$2y$10$OYN9qOPa8EAU202Nsee7s.jDyT8ntHq2mBkM4wWAMxDYvARRyKmr2"
}
]
Run Code Online (Sandbox Code Playgroud)
我想在不使用 mongoimport 命令的情况下导入数据,仅使用 php 客户端,所以我这样做
$fixtures = file_get_contents($fixturesPath . '/' . $fixtureFile);
$rows = json_decode($fixtures, true);
foreach ($rows as $row) {
$this->db->Users->insert($row);
}
Run Code Online (Sandbox Code Playgroud)
插入之前 $row 的 var_dump 是正确的:
(
[_id] => Array
(
[$oid] => 53c3e81ebb593fe827040ef7
)
[email] => one@email.com
[password] => $2y$10$OYN9qOPa8EAU202Nsee7s.jDyT8ntHq2mBkM4wWAMxDYvARRyKmr2
)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[MongoWriteConcernException]
localhost:27017: $oid …Run Code Online (Sandbox Code Playgroud)