2022-07-20:以下go語言程式碼是關於json 和 context的,輸出什麼?A:{};B:{“a“:“b“}

moonfdd發表於2022-07-20

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。

在這裡插入圖片描述

本作品採用《CC 協議》,轉載必須註明作者和本文連結
微信公眾號:福大大架構師每日一題。最新面試題,涉及golang,rust,mysql,redis,雲原生,演算法,分散式,網路,作業系統。

相關文章