在Go Lang中分配给结构的指针的属性

时间:2018-07-31 02:26:32

标签: go

出现以下错误
不能将'“ No 3A4”'(类型字符串)用作分配中的* string类型

如何为查询添加默认值,而不返回行,因此无法使用row.Scan()函数,下面的示例代码。

func (orders *Orders) getOrderStatus() {
    var err error
    for _, order := range *orders {
        row := db.QueryRow("SELECT status FROM mss_orders WHERE externalorderkey = ? ORDER BY tipo ASC LIMIT 1", order.PoNumber)
        err = row.Scan(&order.Status)

        if err != nil {
            &order.Status = "No 3A4"    <----- How can I do this?
        }

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

2 个答案:

答案 0 :(得分:0)

基于该错误,我们知道&order.Status的类型为*string。但是,您正在尝试为其分配类型为string的值。您可以改为指向字符串:

str := "No 3A4"
&order.Status = &str

或者您可以直接分配订单。状态:

order.Status = "No 3A4"

答案 1 :(得分:0)

由于字段的类型为*string,因此必须为字符串分配一个指针。那不可能单行完成:

s := "No 3A4"    
order.Status = &s

或者更改order.Status指向的值:

order.Status = new(string)
*order.Status = "No 3A4"