小编alf*_*dev的帖子

golang reflect,获取指向struct字段值的指针

我正在尝试创建一个以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)

sql reflection go

8
推荐指数
1
解决办法
3449
查看次数

在go包中公开一个函数

我想直接从包中公开一个函数.
所以我可以直接调用我的包而不是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)

go

7
推荐指数
3
解决办法
1万
查看次数

php Mongodb 从 JSON 导出插入时出现“$oid 对于存储无效”错误

我有一个文件,其中包含使用 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)

php json mongodb

2
推荐指数
1
解决办法
6089
查看次数

标签 统计

go ×2

json ×1

mongodb ×1

php ×1

reflection ×1

sql ×1