小编Mar*_*nto的帖子

来自结构的唯一哈希

我想从结构数组生成一个唯一的散列。顺序可能不同,但值相同。

例子:

type MyStruct struct {
   ID string
   Parameters map[string]interface{}
}

arr:= []MyStruct{MyStruct{ID: "test", Parameters: map[string]interface{}{"key": true, "key2": "value"} }, MyStruct{ID: "test2", Parameters: map[string]interface{}{"key2": "value", "key": true} }}
//The order is different even inside the Parameters fields

arr:= []MyStruct{MyStruct{ID: "test2", Parameters: map[string]interface{}{"key2": "value", "key": true} },MyStruct{ID: "test", Parameters: map[string]interface{}{"key": true, "key2": "value"} }}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,散列应该相同,因为结构内的值是相同的。

编辑:基本上这个想法是为缓存生成一个唯一的哈希值!我想组合每个结构的单独哈希!

hash struct go

6
推荐指数
2
解决办法
1万
查看次数

Google Cloud Run 内部服务之间的通信

我有 2 个云运行服务:

这个想法是calculator-api公开的,它将向 提出请求add-apiadd-api由于某种原因,当ingress 为 时,我收到 403 internal,但如果我将 ingress 更改为 to Allow all traffic,则它可以正常工作。

我使用以下代码正确获取 IdToken,然后将令牌注入 header 中Authorization: Bearer IdToken。我的接收者拥有角色add-api许可。calculator-apiCloud Run Invoker

GET request "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://add-api.a.run.app"

Header: {"Metadata-Flavor", "Google"}
Run Code Online (Sandbox Code Playgroud)

因此,我认为问题不在于身份验证,而在于入口设置为 时的某种网络限制internal

google-cloud-platform google-cloud-run

2
推荐指数
1
解决办法
3628
查看次数

Golang类型断言数组

根据我的理解,类型断言只能在接口中使用,并且基本上检查确定的类型是否实现了接口.

我有一些奇怪的场景:

func binder(value interface{}) {
   // Does not work
   valueInt, ok := value.(int)

   // Works
   valueInt, ok := value.(float64)

   // Does not work 
   coordinates, ok := value.([]int)

   // Does not work 
   coordinates, ok := value.([]float64) 
}
Run Code Online (Sandbox Code Playgroud)

基本上,我value是一个空的界面,我从一个json.Unmarshall.

场景1

当我传递一个简单的整数时,它不起作用,但如果我检查它是否是一个浮点数它工作...

情景2

当我传递一个int或浮点数组不起作用!正如您在调试时所看到的,我正在接收一个数组,但由于某种原因,断言不起作用.

在此输入图像描述

go type-assertion

-2
推荐指数
1
解决办法
2339
查看次数