如何引用字符串中的变量,如在Golang的测试中可能出现的情况?

如何引用字符串中的变量,如在Golang的测试中可能出现的情况?,go,Go,以下是测试中的工作: if actualKey != expectedKey { t.Fatalf("Failed. Actual: %q. Expected: %q", actualKey, expectedKey) } 在主代码中: m["Keyword "+kw+" found on "+url] = 0 ,但这失败了: m["Keyword %q found on %q", kw, url] = 0 正如@JimB所建议的,可以使用。以下工作: msg := fmt.Spr

以下是测试中的工作:

if actualKey != expectedKey {
    t.Fatalf("Failed. Actual: %q. Expected: %q", actualKey, expectedKey)
}
在主代码中:

m["Keyword "+kw+" found on "+url] = 0
,但这失败了:

m["Keyword %q found on %q", kw, url] = 0
正如@JimB所建议的,可以使用。以下工作:

msg := fmt.Sprintf("Keyword %q found on %q", kw, url)
m[msg] = 0
问题

  • 将这种方法称为变量引用是否正确?如果为假,它叫什么
  • 这是最简洁的实现方式吗

我认为更好的方法是定义结构类型:

type Result struct {
    Keyword, URL string
}
然后像这样使用它:

m := make(map[Result]int)
m[{"keyword1", "url1"}] = 0

你只是在寻找字符串格式吗@吉米,谢谢你。它起作用了。我已经更新了问题。您能否发布答案并回答其他问题?可能重复:。什么是字符串格式?--“格式化”?(这就是
Fatalf
Printf
Sprintf
末尾的
f
所表示的意思)。您认为最简洁的实现方式是什么?你想写你自己的格式化程序吗?@JimB不。我不想重新发明轮子
msg:=fmt.Sprintf(“在%q上找到了关键字%q”,kw,url)
@JimB在字符串中调用变量就是字符串格式?“hello”+var的名称与fmt.Sprintf相同(“hello%q”,var)?