for j:=0;j<4 ;j++ { } 與for _,v :=range persons {} 區別

qi19901212發表於2016-10-11

請大神詳細講解一下這二者的區別(比較深入點比較好)

package main

import (
    "fmt"
    "strconv"
)
func main() {
    person:=new(Person)
    persons:=make([]Person,4)
    for i:=0;i<4;i++{
        person.Id= strconv.Itoa(i)
        person.Name =  "sun"
        person.AvatarUrl="AAAAA"
        persons[i]=*person
    }
    fmt.Println("----原始陣列-----")
    fmt.Println(persons)
    for _,v :=range persons {
        v.Name="SSS"
    }
    fmt.Println("----range-----")
    fmt.Println(persons)

    for j:=0;j<4 ;j++  {
        persons[j].Name="JJJ"
    }
    fmt.Println("----iiiii-----")
    fmt.Println(persons)
}

type Person struct {
    Id string
    Name string
    AvatarUrl string
}

輸出結果為:

----原始陣列-----
[{0 sun AAAAA} {1 sun AAAAA} {2 sun AAAAA} {3 sun AAAAA}]
----range-----
[{0 sun AAAAA} {1 sun AAAAA} {2 sun AAAAA} {3 sun AAAAA}]
----iiiii-----
[{0 JJJ AAAAA} {1 JJJ AAAAA} {2 JJJ AAAAA} {3 JJJ AAAAA}]
更多原創文章乾貨分享,請關注公眾號
  • for j:=0;j<4 ;j++  {  } 與for _,v :=range persons {} 區別
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章