青春有我
答案是:不,不是。我写了以下测试来断言。func Test_GO_Map_Range(t *testing.T) { originalMap := map[string]int { "a": 1, "b": 2, "c": 3, "d": 4, "e": 5, "f": 6, } getKeys := func(m map[string]int) []string{ mapKeys := make([]string, len(m)) i := 0 for n := range m { mapKeys[i] = n i++ } return mapKeys } keys := getKeys(originalMap) for i := 0; i < 5; i++ { assert.Equal(t, keys, getKeys(originalMap)) }}我得到如下结果:Error: Not equal: expected: []string{"d", "e", "f", "a", "b", "c"} actual : []string{"a", "b", "c", "d", "e", "f"}Error: Not equal: expected: []string{"d", "e", "f", "a", "b", "c"} actual : []string{"f", "a", "b", "c", "d", "e"}Error: Not equal: expected: []string{"d", "e", "f", "a", "b", "c"} actual : []string{"c", "d", "e", "f", "a", "b"}Error: Not equal: expected: []string{"d", "e", "f", "a", "b", "c"} actual : []string{"b", "c", "d", "e", "f", "a"}Error: Not equal: expected: []string{"d", "e", "f", "a", "b", "c"} actual : []string{"a", "b", "c", "d", "e", "f"}