猿问

如何将接口内的值转换为golang中的地图?

我是 GO 的新手。


我的目标是获取 item.Data 中的数据并将它们放入地图中,以便我可以将它们作为键值对进行访问。


据我了解,空接口与 Typescript 中的任何类型相同。


你能分享一下如何在goLang中做到这一点吗?


type SearchLogsResponse struct {


    // The underlying http response

    RawResponse *http.Response


    // A list of SearchResponse instances

    SearchResponse `presentIn:"body"`


    // For list pagination. When this header appears in the response, additional pages

    // of results remain. For important details about how pagination works, see

    // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine).

    OpcNextPage *string `presentIn:"header" name:"opc-next-page"`


    // Unique Oracle-assigned identifier for the request. If you need to contact

    // Oracle about a particular request, please provide the request ID.

    OpcRequestId *string `presentIn:"header" name:"opc-request-id"`

}

// SearchResult 日志搜索结果条目


type SearchResult struct {


    // JSON blob containing the search entry with projected fields.

    Data *interface{} `mandatory:"true" json:"data"`

}



// SearchResponse Search response object.

type SearchResponse struct {

    Summary *SearchResultSummary `mandatory:"true" json:"summary"`


    // List of search results

    Results []SearchResult `mandatory:"false" json:"results"`


    // List of log field schema information.

    Fields []FieldInfo `mandatory:"false" json:"fields"`

}


res, err1 := o.loggingSearchClient.SearchLogs(ctx, request)

    for _, item := range res.Results {


            //TODO create a map string [string]


            // Put key value pairs from item into the above map





}

PS:item.Data 里面的数据是一个键值对的列表,其中每个键可以包含另一个接口内的数据,其值是一个字符串


料青山看我应如是
浏览 109回答 1
1回答

动漫人物

第一:不要使用*interface{},而是使用interface{}。您可以使用类型断言来测试底层类型,Data如果它是 a 则递归下降map[string]interface{}:(您提到这是 SDK 的一部分,无法更改,因此解决方法是取消引用接口)if m, ok:=(*item.Data).(map[string]interface{}); ok {   // m is a map[string]interface{}   etag:=m["data.eTag"]   // etag is an interface{}   if str, ok:=etag.(string); ok {      // str contains the string value   }}
随时随地看视频慕课网APP

相关分类

Go
我要回答