Context.Value(键接口{})接口{}如何工作?

时间:2018-11-27 11:47:58

标签: go

请参见下面的代码

import (
    ...
    "context"
    ...
)

type myStruct struct {
    ID  string
    Sig string
}

mySig := myStruct{
    ID:  "12345678",
    Sig: "Secret_Signature_Token",
}

// Setting a Value associated with a Key in Context
_ := context.WithValue(ctx, "myKey", &mySig)           -- 1

//Getting the same value
value, ok := ctx.Value("myKey").(*myStruct)            -- 2

现在,我的问题是:上述表达式2中.(*myStruct)的用途/含义是什么 有人可以逐步解释第二号声明。

1 个答案:

答案 0 :(得分:1)

ctx.Value("myKey")返回一个接口。因此.(*myStruct)进行类型声明,将其转换为类型*myStruct。因此,左侧的value类型为*myStruct,您可以访问其字段,例如value.ID

您的示例的版本可以在此处查看:https://play.golang.org/p/Eg0v3vuSi6y