小编Kok*_*zzu的帖子

如何使用go build -ldflags在编译时设置布尔变量

我有一个去计划 test.go

package main

import "fmt"

var DEBUG_MODE bool = true    

func main() {
  fmt.Println(DEBUG_MODE)
}
Run Code Online (Sandbox Code Playgroud)

我想DEBUG_MODE编译时将变量设置为false

我试过了:

go build -ldflags "-X main.DEBUG_MODE 0" test.go && ./test 
true                                                                                                                                                                                                                             
kyz@s497:18:49:32:/tmp$ go build -ldflags "-X main.DEBUG_MODE false" test.go && ./test 
true                                                                                                                                                                                                                             
kyz@s497:18:49:41:/tmp$ go build -ldflags "-X main.DEBUG_MODE 0x000000000000" test.go && ./test                                                                                                                                  
true                                                                               
Run Code Online (Sandbox Code Playgroud)

它不起作用,但是当它DEBUG_MODE是一个时它起作用string

ld go

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

在PostgreSQL 9.4中更新json数组的某些数组元素

我有一张这样的桌子;

CREATE TABLE test (
  id BIGSERIAL PRIMARY KEY,
  data JSONB
);

INSERT INTO test(data) VALUES('[1,2,"a",4,"8",6]'); -- id = 1
INSERT INTO test(data) VALUES('[1,2,"b",4,"7",6]'); -- id = 2
Run Code Online (Sandbox Code Playgroud)

如何更新元素data->1,并data->3为其他的东西没有PL/*

arrays postgresql sql-update jsonb postgresql-9.4

5
推荐指数
2
解决办法
4590
查看次数

红宝石中有效的动力和模态方式

我需要知道3个值的幂和mod的值,例如:

print 1_299_709 ** 1_300_751 % 104_729
Run Code Online (Sandbox Code Playgroud)

是否有任何红宝石宝石或更快的方式使用红宝石计算这个?

ruby

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

第 n 个字符后的子字符串的 Bash 索引

有没有办法在 Bash 中获取第 n 个字符之后的子字符串的 indexOf,而不需要一个一个地剪切原始字符串,那会很长

              12345678901234
$ expr index 'abcdeabcdabcaa' 'c'
3
$ expr index 'abcdeabcdabcaa' 'ca'
1 
Run Code Online (Sandbox Code Playgroud)

我想要的是:

$ indexOf 'abcdeabcdabcaa' 'ca'
12
$ indexOfAfter 5 'abcdeabcdabcaa' 'c'
8
$ indexOfAfter 5 'abcdeabcdabcaa' 'ca'
12
$ indexOfAfter 9 'abcdeabcdabcaa' 'b'
11
$ indexOfAfter 111 'abcdeabcdabcaa' 'c'
0
Run Code Online (Sandbox Code Playgroud)

Bash 上可能已经有功能可以做到这一点.. 这不是作业,只是出于好奇..

string bash

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

在Go中嵌入脚本语言

可以在Go中嵌入一种语言吗?举例说明嵌入式语言如何访问Go的变量.我需要它来在我的应用程序中创建插件.

scripting embedding go

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

如何比较Go中的2个函数?

例如,我有我要比较的函数列表:

http://play.golang.org/p/_rCys6rynf

type Action func(foo string)

type Handler struct {
  Get Action
  Post Action
}

var routes map[string]Handler

func Undefined(foo string) {
}

func Defined(foo string) {
}

func init() {
  routes = map[string]Handler{
    `/`: Handler{Defined,Undefined},
  }
}

func main() {
  for _, handler := range routes {
    if handler.Post != Undefined { 
      // do something
    } // invalid operation: (func(string))(handler.Post) != Undefined (func can only be compared to nil)


    if &handler.Post != &Undefined { 
      // do something 
    } // …
Run Code Online (Sandbox Code Playgroud)

function-pointers function go

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

在golang中将[] uint32转换为[]字节,反之亦然

在Golang中进行转换[]uint32和转换的最有效方式(性能)是[]byte什么?

例如:

func main() {
   source := []uint32{1,2,3}
   dest := make([]byte, 4 * len(source))
   // source to dest
   // ?
   check := len(dest)/4
   // dest to check
   // ?
}
Run Code Online (Sandbox Code Playgroud)

我有一个解决方案,但它包括div,mod和multiply

package main
import (
    "fmt"
)
func main() {
    source := []uint32{1,2,3}
    dest := make([]byte, 4*len(source))
    fmt.Println(source)
    for start, v := range source {
       dest[start*4+0] = byte(v % 256)
       dest[start*4+1] = byte(v / 256 % 256)
       dest[start*4+2] = byte(v / 256 / 256 …
Run Code Online (Sandbox Code Playgroud)

go

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

PostgreSQL 中带参数的 SQL 视图,防止运行时 SQL 错误的最佳方法?

PostgreSQL 中可以创建带有参数的视图吗?

问题是,我们的后端服务中可能存在未经验证的 SQL 语法,这可能会导致内部服务器错误,所以我可能需要将每个查询转换为视图?

像这样的东西:

query := ` --
   func Bla_ByType
SELECT id
  , data
    -
    >>
    'name'
FROM bla
WHERE data->>'type' = ` + escapeAndQuote(param1)
Run Code Online (Sandbox Code Playgroud)

上面的语法未被检测为错误,因为它只是一个字符串,正确的语法是:

query := ` -- func Bla_ByType
SELECT id
  , data->>'name'
FROM bla
WHERE data->>'type' = ` + escapeAndQuote(param1)
Run Code Online (Sandbox Code Playgroud)

上面的例子只是一个简单的查询,其他的则更长,如下所示:

WITH t AS (
   SELECT ...
   FROM 
   WHERE param1
) SELECT ... 
FROM ...
LEFT JOIN t 
WHERE param2`
Run Code Online (Sandbox Code Playgroud)

除了阅读课程之外还有其他选择吗:

CREATE OR REPLACE VIEW v_bla_bytype AS 
SELECT id
  , data->>'name'
FROM bla
WHERE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-view

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

什么 - >(破折号大于)运算符意味着在Swift中

我看一下GPUImage2的源代码

    picture = PictureInput(image:UIImage(named:"WID-small.jpg")!)
    filter = SaturationAdjustment()
    picture --> filter --> renderView
    picture.processImage()
Run Code Online (Sandbox Code Playgroud)

怎么-->办?

swift

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

如何使用 NATS 正确传递远程父跨度?

我有一个虚拟示例我在这个仓库

我尝试将当前跨度上下文传递给远程跨度上下文,以便它可以正确显示跟踪,我所做的:

go func() {
    _, span := otel.Tracer("natsC").Start(context.Background(), "publish")
    defer span.End()

    // send current span context as header
    spanCtx := span.SpanContext()
    spanJson, _ := spanCtx.MarshalJSON()
    log.Println(string(spanJson))
    msg, err := nc.RequestMsg(&nats.Msg{
        Subject: topic1, Data: []byte("whatever"), Header: nats.Header{
            "otelTrace": []string{string(spanJson)},
        },
    }, 2*time.Second)
    if L.IsError(err, `nc.Publish`) {
        return
    }
    log.Println(`reply:`, msg)
}()
Run Code Online (Sandbox Code Playgroud)

在接收服务器上:

_, err = nc.QueueSubscribe(topic1, "my-queue", func(msg *nats.Msg) {
    // take header and deserialize back to spanContext
    rsc := msg.Header.Get(`otelTrace`)
    parentSpanCtx := trace.SpanContext{}
    err := json.Unmarshal([]byte(rsc), &parentSpanCtx)
    L.IsError(err, …
Run Code Online (Sandbox Code Playgroud)

go nats.io opentracing open-telemetry

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