openlang

我想保留我的 null

你好,

我想保留 REST API 服务器以 JSON 发来的 null。目前我把它反序列化到结构体,这会把那些 Null 变成零值。

有人能给一个小示例或有用的视频链接吗?我尝试过指针,但没理解它的好处,因为还是看到了零值。

从英语翻译查看原文

后续讨论 3

顺着彼此的依据读下去
  1. 固定链接

    你好 fernvale_54,

    正如 mossglen_55 已经指出的,可以用指针表示一个值,说明对应的数据可能不存在

    type Entry struct {
        Text *string `json:"bar"`
    }

    使用可能为 null 的值时,先检查它是不是 null,再把它当作实际存在的值使用,否则运行时会报 panic: runtime error: invalid memory address or nil pointer dereference,可以采用类似下面的写法,

    var entry Entry
    
    //...unmarsal into Entry
    
    if entry.Text != nil {
        // len() is safe in this branch
        fmt.Println(len(*entry.Text))
    }

    要让输出的 JSON 更整洁,也可以研究 omitempty 和 omitzero 标签(omitzero 是 go 1.24 才加入的,还比较新,因此相关资料可能不多)

    从英语翻译查看原文
  2. 固定链接

    go 有个方便的特点,len() 是一个静态函数。获取切片长度,甚至遍历切片之前,都不需要检查 null。对大多数操作来说,nil 切片的行为就像长度为 0 的切片。

    不过,对于其余基本类型、结构体和映射,你说的是对的。

    从英语翻译查看原文

同一个问题的其他角度

  1. MySQL SELECT 中条件表达式的语法是什么?

    我在用 MySQL,想在 SQL 中写类似三元表达式的东西,比如这样。 输出大致应该是这个样子。 这该怎么表达?

    回复 2最近活动 sql
  2. 在 PostgreSQL 9+ 中安全删除可能不存在的列

    我想删除表中的一列。怎样确定这一列是否存在? 我看了 https://www.postgresql.org/docs/9.2/static/sql-altertable.html, 这页手册,但没有找到说明这种操作的例子。 还找到了检查 SQL Se…

    回复 2最近活动 sql
  3. SQL 派生表中无法访问的字段

    我正在执行下面这条 SQL 语句。 它给出了下面的错误。 #1054 - Unknown column 'shipping.post_id' in 'on clause'. 代码看起来很简单,可就是无法正常工作。我哪里写错了?

    回复 2最近活动 sql