一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
Go学习打卡Day02 数组&切片
数组
1、数组的定义与初始化
package main
import (
"fmt"
)
func main() {
var arr [5]int
fmt.Println(arr, len(arr))
arr_1 := [5]int{1, 2, 3, 4, 5}
fmt.Println(arr_1)
arr_2 := [...]int{1, 2, 3}
fmt.Println(arr_2, len(arr_2))
//二维数组
arr_3 := [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
fmt.Println(arr_3)
}
output:
[0 0 0 0 0] 5 [1 2 3 4 5] [1 2 3] 3 [[1 2 3] [4 5 6] [7 8 9]]
2、数组的修改与传参
package main
import (
"fmt"
)
func main() {
arr := [5]int{1, 2, 3, 4, 5}
fmt.Println(arr)
modifyArr(&arr)
fmt.Println(arr)
}
func modifyArr(a *[5]int) {
a[0] = 0
}
//output:
//[1 2 3 4 5]
//[0 2 3 4 5]
3、数组的遍历
package main
import (
"fmt"
)
func main() {
arr := [5]int{1, 2, 3, 4, 5}
for i := 0; i < 5; i++ {
fmt.Println(arr[i])
}
for k, v := range arr {
fmt.Println(k, v)
}
}
切片
- 切片是一种动态数组,比数组操作灵活,长度不是固定的,可以进行追加和删除。
- 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。
- 切片是一个引用类型,它的内部结构包含
地址、长度和容量。切片一般用于快速地操作一块数据集合。
1、声明切片
package main
import (
"fmt"
)
func main() {
// 声明切片类型
var a []string //声明一个字符串切片
var b = []int{} //声明一个整型切片并初始化
var c = []bool{false, true} //声明一个布尔切片并初始化
//var d = []bool{false, true} //声明一个布尔切片并初始化
fmt.Println(a) //[]
fmt.Println(b) //[]
fmt.Println(c) //[false true]
fmt.Println(a == nil) //true
fmt.Println(b == nil) //false
fmt.Println(c == nil) //false
//fmt.Println(c == d) //切片是引用类型,不支持直接比较,只能和nil比较
}
2、切片表达式
Go刷题 每日语法练习
136. 只出现一次的数字
func singleNumber(nums []int) int {
ret := 0
for i := 0; i < len(nums); i++ {
ret ^= nums[i]
}
return ret
}