小编Suk*_*esh的帖子

如何在 Golang 中将 proto 数组编组(使用 protojson 包)为 json?

如何在Golang中使用protojson包实现以下功能?

协议缓冲区:

type ProtoResp struct {
  state         protoimpl.MessageState
  sizeCache     protoimpl.SizeCache
  unknownFields protoimpl.UnknownFields

  Xesp isActionResponse_Xesp `protobuf_oneof:"xesp"`
  TimeTakena string `protobuf:"bytes,9,opt,name=time_takena,json=timeTakena,proto3" json:"time_takena,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

因此,我需要将 proto 数组编组为 json。例如,

type ProtoResp struct {
  state         protoimpl.MessageState
  sizeCache     protoimpl.SizeCache
  unknownFields protoimpl.UnknownFields

  Xesp isActionResponse_Xesp `protobuf_oneof:"xesp"`
  TimeTakena string `protobuf:"bytes,9,opt,name=time_takena,json=timeTakena,proto3" json:"time_takena,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

我该如何整理这个protoResps

目前,protojson.Marshal函数可以封送ProtoResp,但不能封送[]ProtoResp作为其原型片段。

我还需要稍后将其解组回[]ProtoResp

提前致谢。

json go protocol-buffers protobuf-go

9
推荐指数
1
解决办法
4271
查看次数

如何在redis golang中将键值对传递给MSet?

redis-go 中的 MSetpairs ...interface{} 在这里接受

func (c *cmdable) MSet(pairs ...interface{}) *StatusCmd {
    args := make([]interface{}, 1, 1+len(pairs))
    args[0] = "mset"
    args = appendArgs(args, pairs)
    cmd := NewStatusCmd(args...)
    c.process(cmd)
    return cmd
}
Run Code Online (Sandbox Code Playgroud)

现在,我已keys []string映射到values []int64要在 Redis 缓存中设置。如何将它们转换为接口片段并将它们传递给它MSet以使其工作?

interface go redis

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

字符串终止C/C++ char = 0

#include<stdio.h>
#include<string.h>

void terminateString(char *str){
    str[3] = 0;
    printf("string after termination is:%s\n",str);
}

int main(){
    char str[]="abababcdfef";
    terminateString(str);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

string after termination is:aba
Run Code Online (Sandbox Code Playgroud)

我们只将索引'3'处的元素赋值为0,但为什么忽略该索引之后的所有字符?有人可以解释一下这种行为吗?

c string

-8
推荐指数
1
解决办法
527
查看次数

标签 统计

go ×2

c ×1

interface ×1

json ×1

protobuf-go ×1

protocol-buffers ×1

redis ×1

string ×1