如何使用map[string]*string

如何使用map[string]*string,string,dictionary,pointers,go,sarama,String,Dictionary,Pointers,Go,Sarama,我正在尝试使用sarama(管理模式)创建一个主题。 没有ConfigEntries就可以了。但我需要定义一些配置 我设置了主题配置(这里发生了错误): 但是我得到了一个错误: ./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 valu

我正在尝试使用sarama(管理模式)创建一个主题。 没有ConfigEntries就可以了。但我需要定义一些配置

我设置了主题配置(这里发生了错误):

但是我得到了一个错误:

./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)
下面是定义CreateTopic()的sarama模块中的一行


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

要初始化具有
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"),
}
试一下上面的例子


请参见此处的背景和其他选项:

若要初始化具有
字符串的指针值类型的映射,必须使用
字符串
指针值。
字符串
文本不是指针,它只是一个
字符串

获取
字符串
值指针的简单方法是获取
字符串
类型变量的地址,例如:

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"),
}
试一下上面的例子


请参见此处的背景和其他选项:

错误非常明显。不能将字符串用作指向字符串的指针。什么部分不清楚?我对golang是新手:)我还不知道指针字符串是如何工作的。我知道指针直接指向变量内存中的值。但我不明白什么是指针字符串的映射。我是否应该创建一个变量测试字符串,然后指向这个变量,比如*test?好的。我建议从这开始。具体来说,错误很明显。不能将字符串用作指向字符串的指针。什么部分不清楚?我对golang是新手:)我还不知道指针字符串是如何工作的。我知道指针直接指向变量内存中的值。但我不明白什么是指针字符串的映射。我是否应该创建一个变量测试字符串,然后指向这个变量,比如*test?好的。我建议从这开始。明确地