小编lns*_*shi的帖子

Go无法在map中分配给struct字段

我有这样的数据结构:

type Snapshot struct {
  Key   string
  Users []Users
}

snapshots := make(map[string] Snapshot, 1)

// then did the initialization
snapshots["test"] = Snapshot {
  Key: "testVal",
  Users: make([]Users, 0),
}
Run Code Online (Sandbox Code Playgroud)

Users 是另一个结构

然后,当我尝试Users在Users切片中追加一些新值时,如下所示:

snapshots["test"].Users = append(snapshots["test"].Users, user)
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误:

cannot assign to struct field snapshots["test"].Users in map
Run Code Online (Sandbox Code Playgroud)

也试过这里的解决方法https://github.com/golang/go/issues/3117所以这样:

tmp := snapshots["test"].Users
tmp = append(tmp, user)
snapshots["test"].Users = tmp
Run Code Online (Sandbox Code Playgroud)

但没有运气,仍然完全相同的错误.

并且还试图用指针声明地图,所以:snapshots := make(map[string] *Snapshot, 1),仍然没有运气

有人请帮助我,谢谢.

go

24
推荐指数
3
解决办法
3万
查看次数

parseInt对小数部分的奇怪和不一致行为

console.log(parseInt(0.0000008))
// > 8

console.log(parseInt(0.000008))
// > 0

console.log(parseInt(0.0000008, 10))
// > 8

console.log(parseInt(0.000008, 10))
// > 0
Run Code Online (Sandbox Code Playgroud)

以上代码在macOS Sierra版本10.12.6上的Google Chrome版本62.0.3202.94(官方版本)(64位)运行.

如您所见,该行为不取决于您是否指定基数.

注意:我通常使用~~而不是使用parseInt,它看起来更安全.

为什么我得到这些结果?

javascript v8

12
推荐指数
1
解决办法
412
查看次数

为什么GraphQL` implements`需要复制字段,这是强制性的吗?如果是,那么潜在的原因是什么?

为什么GraphQL implements关键字需要复制字段,这是强制性的吗?与文档中的示例一样:

enum Episode { NEWHOPE, EMPIRE, JEDI }

interface Character {
  id: String
  name: String
  friends: [Character]
  appearsIn: [Episode]
}

type Human implements Character {
  id: String
  name: String
  friends: [Character]
  appearsIn: [Episode]
  homePlanet: String
}

type Droid implements Character {
  id: String
  name: String
  friends: [Character]
  appearsIn: [Episode]
  primaryFunction: String
}
Run Code Online (Sandbox Code Playgroud)

如果是,那么潜在的原因是什么?

因为如果我必须复制,如果我改变那么我需要改变到处...

graphql graphql-js

7
推荐指数
1
解决办法
790
查看次数

在GraphQL中,当使用`interfaces`功能时,如何处理`resolveType`和`isTypeOf`?

我已经阅读了这个伟大的要点 - GraphQLInterfaceType

但仍有一些困惑:

  1. 是否真的有必要ES6 classes为所有GraphQL架构类型定义?
    • 这里主要关注的是:我们最终会得到很多空的ES6 classes和等量的GraphQL types.
  2. 如果不是,那么如何处理resolveTypeisTypeOf适当的时候使用interfaces的功能很多吗?
  3. 即使我定义了所有的ES6 classes所有内容GraphQL types,但原始数据是在不同的地方构建的,具有不同的技术grpc+protobuf,这与这些类定义没有任何关系,那么isTypeOf: (value) => value instanceof Dog这里的工作如何?

graphql graphql-js

7
推荐指数
1
解决办法
1539
查看次数

Docker Alpine映像+ grpc:警告:使用了不安全的环境读取功能'getenv'

当我使用以下图像时:node:6.11.0-alpine运行我的服务(使用GRPC),然后继续收到以下警告:

D0622 06:52:01.170502843       1 env_linux.c:66]             Warning: insecure environment read function 'getenv' used
D0622 06:52:01.554446816      12 env_linux.c:66]             Warning: insecure environment read function 'getenv' used
D0622 06:52:01.559295167      14 env_linux.c:66]             Warning: insecure environment read function 'getenv' used
D0622 06:52:01.566036292      13 env_linux.c:66]             Warning: insecure environment read function 'getenv' used
D0622 06:52:01.569975088      15 env_linux.c:66]             Warning: insecure environment read function 'getenv' used
Run Code Online (Sandbox Code Playgroud)

我会错过任何包裹吗?如何解决这个问题?

可以参考此问题#8104

getenv docker alpine-linux

7
推荐指数
1
解决办法
877
查看次数

当键可用时,python asyncio从字典中按键异步获取数据

正如标题所说,我的用例是这样的:

我有一个 aiohttp 服务器,它接受来自客户端的请求,当我收到请求时,我为它生成一个唯一的请求 ID,然后我将{req_id: req_pyaload}dict发送给一些工作人员(工作人员不在 python 中,因此在另一个进程中运行),当工人完成的工作,我回来的响应,并把它们放到一个结果字典是这样的:{req_id_1: res_1, req_id_2: res_2}

然后我希望我的 aiohttp 服务器处理程序await在上面result dict,所以当特定的响应变得可用时(通过 req_id)它可以将它发送回来。

下面的示例代码,我建立以尽量模拟过程中,却被困在执行协程async def fetch_correct_res(req_id)异步/ unblockly获取由正确的响应req_id

import random
import asyncio
import shortuuid

n_tests = 1000

idxs = list(range(n_tests))

req_ids = []
for _ in range(n_tests):
    req_ids.append(shortuuid.uuid())

res_dict = {}

async def fetch_correct_res(req_id):
    pass

async def handler(req):
    res = await fetch_correct_res(req)
    assert req == res, "the correct res for the req should exactly …
Run Code Online (Sandbox Code Playgroud)

python python-3.x async-await python-asyncio aiohttp

5
推荐指数
1
解决办法
1064
查看次数

如何根据goroutine返回的值停止goroutine

就像在这里我创建了一个游乐场样本:sGgxEh40ev,但无法让它工作.

quit := make(chan bool)
res := make(chan int)

go func() {
    idx := 0
    for {
        select {
        case <-quit:
            fmt.Println("Detected quit signal!")
            return
        default:
            fmt.Println("goroutine is doing stuff..")
            res <- idx
            idx++
        }
    }

}()

for r := range res {
    if r == 6 {
        quit <- true
    }
    fmt.Println("I received: ", r)
}
Run Code Online (Sandbox Code Playgroud)

输出:

goroutine is doing stuff..
goroutine is doing stuff..
I received:  0
I received:  1
goroutine is doing stuff..
goroutine is …
Run Code Online (Sandbox Code Playgroud)

channel go goroutine

4
推荐指数
1
解决办法
1609
查看次数

哪些用例真正使Prometheus的摘要指标类型必要/独特?

对于Prometheus指标收集(例如标题),我无法真正找到只能通过Summary类型完成的用例,似乎它们也都可以通过直方图来完成。

让我们以请求并发指标为例,毫无疑问,这可以通过完成type Summary,但是我也可以通过使用来达到相同的效果type Histogram,如下所示:

费率(http_request_duration_seconds_sum [1s])/费率(http_request_duration_seconds_count [1s])

我可以看到的唯一区别是:对于摘要,百分位数是在客户端中计算的,它由一个计数和总和计数器(如直方图类型)和结果分位数组成。

因此,我对哪些用例真正使type Summary必要/独特感到迷茫,请帮助我。

prometheus

4
推荐指数
2
解决办法
1760
查看次数

Python assert的使用场景是什么

有人可以解释何时使用,什么是最佳的断言适用场景?

我的观点是:

  • 既然等于 if not then raise
  • 在优化模式下-O,它将被忽略

那么,源代码(而非单元测试)中的使用场景assert什么?

从我的传统经验来看,assert应该只存在于单元测试中,实际上并不能理解为什么它开始越来越多地出现在Python项目代码中。

python assert

3
推荐指数
1
解决办法
90
查看次数

当请求具有正文(卷曲,邮递员)时,Go http 上下文无法捕获取消信号

可以使用以下简单的 go 代码片段重现该问题吗?

简单的 http 服务器:

package main

import (
    "fmt"
    "log"
    "net/http"
    "time"
)

func handler(w http.ResponseWriter, r *http.Request) {
    go func(done <-chan struct{}) {
        <-done
        fmt.Println("message", "client connection has gone away, request got cancelled")
    }(r.Context().Done())

    time.Sleep(30 * time.Second)
    fmt.Fprintf(w, "Hi there, I love %s!\n", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
Run Code Online (Sandbox Code Playgroud)

从 http 服务器上方开始,如果我GET使用 curl(邮递员也)发送一个简单的请求,例如:

curl -X GET http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)

然后按Ctrl+C终止请求,然后我就可以在服务器端看到打印的消息:

message client connection has gone away, request got cancelled
Run Code Online (Sandbox Code Playgroud)

以上是我期望的正确行为:模拟当客户端离开时服务器可以捕获它然后尽早取消所有不必要的工作的情况。 …

curl http go postman

3
推荐指数
1
解决办法
766
查看次数