为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用map[string]*string

如何使用map[string]*string

Go
慕尼黑5688855 2023-06-26 16:41:54
我正在尝试使用 sarama(管理模式)来创建主题。没有 ConfigEntries 工作正常。但我需要定义一些配置。我设置了主题配置(这里发生了错误):    tConfigs := map[string]*string{        "cleanup.policy":      "delete",        "delete.retention.ms": "36000000",    }但后来我得到一个错误:./main.go:99:28: cannot use "delete" (type string) as type *string in map value./main.go:100:28: cannot use "36000000" (type string) as type *string in map value我正在尝试使用这样的管理模式:err = admin.CreateTopic(t.Name, &sarama.TopicDetail{    NumPartitions:     1,    ReplicationFactor: 3,    ConfigEntries:     tConfigs,}, false)这是 sarama 模块中定义 CreateTopic() 的行 https://github.com/Shopify/sarama/blob/master/admin.go#L18基本上,我不明白指针字符串的映射是如何工作的:)
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

要使用复合文字string初始化具有指针值类型的映射,您必须使用指针值。文字不是指针,它只是一个值。stringstringstring

获取指向string值的指针的一种简单方法是获取类型变量的地址string,例如:

s1 := "delete"

s2 := "36000000"


tConfigs := map[string]*string{

    "cleanup.policy":      &s1,

    "delete.retention.ms": &s2,

}

为了方便多次使用,创建一个辅助函数:


func strptr(s string) *string { return &s }

并使用它:


tConfigs := map[string]*string{

    "cleanup.policy":      strptr("delete"),

    "delete.retention.ms": strptr("36000000"),

}

查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信