多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> ### for 和 for range区别 * range 可以将每个独立的Unicode码点分离出来 ~~~ package main import ( "fmt" "time" "reflect" ) type student struct { name string age int content string } func main() { //for range只能用于遍历系统自带的array slice map 和chan ,数据结构就不能用range s1 := student{name: "张三", age: 18, content: "Hello World"} for k := 0; k < reflect.TypeOf(s1).NumField(); k++ { fmt.Println(reflect.TypeOf(s1).Field(k).Name, "=>", reflect.ValueOf(s1).Field(k)) } number1 := []int{4, 8, 12, 16, 20} //len := len(number1) 用变量代替, 不用每次循环都计算number1长度 for i := 0; i < len(number1); i++ { if i == 0 { number1 = append(number1, 24) } fmt.Print(&number1[i], " - ") } fmt.Println("") number2 := []int{4, 8, 12, 16, 20} //range是申请一个地址n,并且把值拷贝到&n for k, v := range number2 { if k == 0 { number2 = append(number2, 24) } fmt.Print(&v, " - ") } fmt.Println("") number3 := []int{4, 8, 12, 16, 20} for _, v := range number3 { go func() { fmt.Print(v, "-") }() } time.Sleep(time.Second) } ~~~