猿问

如何使用map[string]*string

我正在尝试使用 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


基本上,我不明白指针字符串的映射是如何工作的:)


慕尼黑5688855
浏览 111回答 1
1回答

哔哔one

要使用复合文字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"),}
随时随地看视频慕课网APP

相关分类

Go
我要回答