MacBook 外接显示器无法被点亮

我用的 MacBook Pro 15-Inch (2017),经常会遇到开机或睡眠唤醒后外接显示器无法被点亮的问题,外接显示器是用 USB-C 直连的。

根据我的经验,你可以尝试使用下面的方法解决问题(不保证一定成功):

  • 重启电脑大法好
  • 可能是接触不良,试着稍微拔出来一点晃动几次
  • 尝试使用转接头

json.Marshal() 中 omitempty 的使用

我们可以使用 json.Marshal() 将结构体转换为 json。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
type Role struct {
ID int `json:"id"`
Name string `json:"Name"`
}

type User struct {
ID int `json:"id"`
Username string `json:"username"`
Role *Role `json:"role"`
}

user := &User{
ID: 1,
Username: "user1",
}

b, err := json.Marshal(user)
if err != nil {
panic(err)
}

fmt.Println(string(b)) // 输出:{"id":1,"username":"user1","role":null}

json.Marshal() 会将 nil 转换为 null,所以 role 字段的值为 null

如果我们不想让值为 null 的字段出现在 json 中,可以使用 omitempty 标签,例如:

1
2
3
4
5
6
7
type User struct {
Id int `json:"id"`
Username string `json:"username"`
Role *Role `json:"role,omitempty"`
}

fmt.Println(string(b)) // 输出:{"id":1,"username":"user1"}

加了 omitempty 标签后,role 字段就被忽略了,不会出现在 json 中。实际上加了 omitempty 标签后,会忽略所有零值,不仅仅是空指针。

如果没有生效,看一下你是不是写成了 json:"role, omitempty"