1. range 表达式的值
当for语句被执行的时候,在range关键自右边的number1会先被求值(下面程序码)。而这个位置上的代码被称为range表达式。
range表达式的结果值可以是array、pointer to an array、slice、string、map、channel(channel permitting receive operations 比如:chan int or - chan<- int)。
package main
import "fmt"
func main() {
numbers1 := [...]int{1, 2, 3, 4, 5, 6}
for i, e := range numbers1 {
fmt.Println(i,e)
}
fmt.Println()
for i := range numbers1 {
fmt.Println(i)
}
fmt.Println()
}
https://play.golang.org/p/GDBWAZwZZ5N
numbers1 := [...]int{1, 2, 3, 4, 5, 6}
for i, e := range numbers1
对於不同种类的range表达式结果值,for语句的变数,数量可以不一样。
number1是一个array,那变数就可以有两个,第一个变数是索引值(i),第二个变数是元素值(e)。
numbers1 := [...]int{1, 2, 3, 4, 5, 6}
for i := range numbers1
在这个状况下,如果只写一个变数,得到的就会是索引值(i)。
2. slice为引用类型,array为值类型
值类型:变数直接储存值。(同属於值类型的包含,基础数据类型、结构体类型。)
引用类型:变数储存的是一个地址,而这个地址储存最终的值。(同属於引用类型的包含,字典、通道、函数类型。)
package main
import "fmt"
func main() {
numbers1 := [...]int{1, 2, 3, 4, 5, 6}
maxIndex1 := len(numbers1) - 1
for i, e := range numbers1 {
if i == maxIndex1 {
numbers1[0] += e
} else {
numbers1[i+1] += e
}
}
fmt.Println(numbers1)
fmt.Println()
numbers2 := []int{1, 2, 3, 4, 5, 6}
maxIndex2 := len(numbers2) - 1
for i, e := range numbers2 {
if i == maxIndex2 {
numbers2[0] += e
} else {
numbers2[i+1] += e
}
}
fmt.Println(numbers2)
}
https://play.golang.org/p/79dR8P2bQCW
参考来源
郝林-Go语言核心36讲
在大量数据同时表格陈列於画面上时通常 都会需要有一些关键字查询的机制 新增Search的Action...
Tag:随意刷-[50-100] LeetCode Problem Source: 88. Merg...
昨天看到运镜这词,大家是不是会想到拍电影呢?今天的主题也是跟电影有关的(?),大家看电影的时候,遇到...
昨天的文章有提到计画案有部分的厂商是需要去挖掘的,也因此今天会来分享一个计画案出现前与厂商面谈的心得...
前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...