为go结构中的指针类型赋值

Assigning values to pointer types in a go struct

为了在尝试将数据结构输入数据库行时处理空值(使用 goqu),我定义了一个类似于

的结构
type datain struct {
   id *float32 `db:"id"`
   tempr *float32 `db:"temperature"`
}

因为这些都来自字符串,所以我创建了一个函数

func stringToFloat32(instr string) float32 {
    value, err := strconv.ParseFloat(instr, 32)
    if err != nil {
        log.Crit("error converting to float", "stringToFloat32", err)
    }
    return float32(value)
}

将字符串转换为 float32... 但是当我尝试使用

var datastruct datain
*datastruct.id = stringToFloat32("1234.4")

我收到错误、无效地址或零指针取消引用 哪一种对我来说有意义.. 但尽我所能,我无法弄清楚如何在这些结构字段中放置一个值(如果存在的话)。

当输入的 csv 字符串中的某个字段没有值时,我正在尝试使用此机制允许空值。

也许我这样做很困难?我肯定有地方语法错误。

进一步挖掘.. 似乎我可能需要一个 new() 函数来为每个指针分配一个真正的变量...不过仍然忍不住觉得这样做很困难。

当你定义一个 datain 变量而不进行任何初始化时,id 的值为 nil,这意味着你不能 de-reference 它。

var datastruct datain
id := stringToFloat32("1234.4")
datastruct.id = &id