小编Rag*_*nar的帖子

从 jsonb 字段构建 jsonb 数组

我有options类型为 jsonb 的列,{"names": ["name1", "name2"]}其格式是用创建的

UPDATE table1 t1 SET options = (SELECT jsonb_build_object('names', names) FROM table2 t2 WHERE t2.id= t1.id)
Run Code Online (Sandbox Code Playgroud)

其中names有类型 jsonb 数组。

SELECT jsonb_typeof(names) FROM table2array

现在我想提取namesjsonb 数组的值。但查询

SELECT jsonb_build_array(options->>'names') FROM table 
Run Code Online (Sandbox Code Playgroud)

给了我["[\"name1\", \"name2\"]"],而我期待着["name1", "name2"]

我怎样才能以正确的格式获得价值?

postgresql jsonb

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

如何在 Golang 中使用 goroutine 从 stdin 读取数据?

有问题清单。我一一向用户展示问题并等待用户的回答。每个问题都应该在几秒钟内得到回答(例如问题 5 秒)。如果问题得到正确且及时的回答,那么用户将获得一些积分。我的代码看起来像:

 for i := 0; i < len(questions); i++ {
        fmt.Println(questions[i].Text)
        ans := make(chan int)
        go func() {
            fmt.Print("Enter answer ")
            var u int
            fmt.Scanf("%d\n", &u)
            ans <- u
        }()

        select {
        case userAnswer := <-ans:
            if userAnswer == questions[i].Answer {
                points++
            }
        case <-time.After(5 * time.Second):
            fmt.Println("\n Time is over!")
        }
    }
Run Code Online (Sandbox Code Playgroud)

接下来的问题是:如果用户不回答问题,那么他会收到消息“时间结束”,如预期的那样。但下一个答案将不会被处理,用户应该再次输入。它看起来像下一个输出:

question with answer  1
Enter answer: 1
1  is right answer
question with answer  2
Enter answer: 2
2  is right answer
question with …
Run Code Online (Sandbox Code Playgroud)

concurrency go goroutine

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

标签 统计

concurrency ×1

go ×1

goroutine ×1

jsonb ×1

postgresql ×1