先前, for-range所能遍歷(迭代)的類型很有限,只能是 slice、數組、map、字符串、channel 等。 現在,除了上面的五種類型,還可以是整數和三種三種函數。 當然for x := range n { ... }等價于for x := T(0); x < n; x++ { ... }, 其中 T 是 n 的類型。這個大家都知道了。 range 的類
對于數組、切片或字符串,每次迭代,for-range語句都會將原始值的副本傳遞給迭代變量,而非原始值本身。 口說無憑,具體是不是這樣,還得靠源碼說話。 Go 編譯器會將for-range語句轉換成類似 C 語言的三段式循環(huán)結構,就像這樣: 1 2 3 4 5 6 7 // Arrange to do a loop appropriate for the type. We will ...