struct中的字符串文字长于struct之外的相同字符串

时间:2018-01-13 04:25:35

标签: go

我的Go代码中遇到了一个非常奇怪的问题。似乎相同的字符串,一个在结构内部声明,一个在外部,在使用时具有不同的长度。以下代码显示了一个示例:

type evaluateTest struct {
    name     string
    expected int
    fen      string

}

func TestEvaluate(t *testing.T) {
    cases := []evaluateTest{
        {"Pawn testing",  330, "​​8/8/8/8/4P3/3P4/2P5/8 w KQkq - 0 11"},
    }

    for _, test := range cases {
        outside := "​8/8/8/8/4P3/3P4/2P5/8 w KQkq - 0 11"
        fmt.Printf("String in struct has length %v\n", len(test.fen))
        fmt.Printf("String outside struct has length %v\n", len(outside))

输出:

String in struct has length 41
String outside struct has length 38

在字符串中循环并打印字符代码会在结构中字符串的前三个位置(十进制226,128,139)中给出垃圾字符,而在外部声明的字符串中则没有。

我真的不知道这里发生了什么。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

一个字符串以两个零宽度空格(\ u200b)开头。另一个从一个开始。

在这种情况下,使用%q进行打印有助于查看正在发生的情况。请参阅the playground example