2022-07-20:以下go语言代码是关于json 和 context的,输出什么?A:{};B:{“a“:“b“};C:{“Context“:0};D:不确定。 package main imp

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-07-20:以下go语言代码是关于json 和 context的,输出什么?A:{};B:{“a“:“b“};C:{“Context“:0};D:不确定。 package main imp相关的知识,希望对你有一定的参考价值。

2022-07-20:以下go语言代码是关于json 和 context的,输出什么?A:;B:“a”:“b”;C:“Context”:0;D:不确定。

package main

import (
    "context"
    "encoding/json"
    "fmt"
)

func main() 
    data, _ := json.Marshal(context.WithValue(context.Background(), "a", "b"))
    fmt.Println(string(data))


答案2022-07-20:

答案选C。WithValue 底层是 valueCtx 结构体,其中 key、val 两个字段未导出,这里存放 “a” 和 “b”,同时还内嵌了 Context 接口。根据 Marshal 的规则,非导出的不会被序列化。而内嵌 Context 相当于导出了 Context 字段,而它的值是 context.Background(),即 background = new(emptyCtx),emptyCtx 实际是 int 类型,因此选 C。

以上是关于2022-07-20:以下go语言代码是关于json 和 context的,输出什么?A:{};B:{“a“:“b“};C:{“Context“:0};D:不确定。 package main imp的主要内容,如果未能解决你的问题,请参考以下文章

go语言关于值类型和引用类型

GO1.6语言学习笔记2-安装配置及代码组织

go语言框架gin之集成swagger

获取 Go 语言中的 Unix 时间戳(当前时间,以秒为单位)

截止到Go1.15.2以前,关于覆盖率技术底层实现,以下知识点您应该知道

Go语言能做什么