下面这段代码能否通过编译,如果可以,输出什么?
func main() {
s1 := []int{1, 2, 3}
s2 := []int{4, 5}
s1 = append(s1, s2)
fmt.Println(s1)
}
下面这段代码能否通过编译,如果可以,输出什么?
func main() {
s1 := []int{1, 2, 3}
s2 := []int{4, 5}
s1 = append(s1, s2)
fmt.Println(s1)
}
`单行代码`
s1 = append(s1,s2...) 需要用语法糖将切片进行拆分
啥时候出专栏,把历史的每日一题放一起
目前故意隐藏了历史题目,希望大家坚持做。
如果每天对当天题目做了回复,在你的所有评论中可以找到历史题目
不行,s2需要 unpack:
s1 = append(s1,s2...)
错,append(s1,s2...)
这个题目迷惑性不强,s2 := []int{4},就更具迷惑性了。
mark
你是魔鬼吗?你是八股文的始作俑者吧?
打卡
每天一题
mark
mark
mark
打卡
mk
不能。改成 s1 = append(s1, s2...) 就好了。后一个参数是一系列值,不能是切片。
mark
将一个切片追加到另一个切片上:append(s1,s2…)
无坑打卡
切片append需要...
append() 的第二个参数不能直接使用 slice,需使用 … 操作符
append() 的第二个参数不能直接使用 slice,需使用 … 操作符
第一次看到append(s1, s2...)这样的语法糖,学到了!
append() 的第二个参数不能直接使用 slice,需使用 … 操作符 学到了
mark
mark
mark
在 Golang 中,参数 ...(称为 ellipsis 或 variadic)表示可以接收任意数量的参数,这些参数将被转换为一个切片,以在函数中使用。
在 Golang 中,... 用于将 slice 展开为可变参数列表,使其能够传递给期望接收可变参数的函数。在这种情况下,... 是一个语法糖,它允许我们将 slice 的每个元素视为一个单独的参数。因此,当我们调用一个期望接收可变参数的函数时,可以传递一个 slice,并将其展开为一个参数列表。
如果在 slice 后面加上 ellipsis,例如 slice1.append(slice1, slice2...),实际上是将 slice2 展开为一个参数列表,并将其作为参数传递给 append 函数。这将导致 slice2 中的每个元素都被添加到 slice1 中。
需要注意的是,... 语法只能用于最后一个参数,用于将 slice 展开为可变参数列表。如果在其他位置使用 ...,则会导致编译错误。
mark
mark
提示报错 ,append时候第二个参数如果是切片的 时候需要展开 (...)
打卡
打卡
mark
func main() { s1 := []int{1, 2, 3} s2 := []int{4, 5} s1 = append(s1, s2...) // fmt.Println(s1) }
mark
mark
mark
mk
mark
mark
append(s1,s2…)
append(s1,s2...)
打卡
不能通过编译, s1 = append(s1, s2) 需要改成 s1 = append(s1, s2...) 解构一下
不能通过编译。append() 的第二个参数不能直接使用 slice,需使用 … 操作符,将一个切片追加到另一个切片上:append(s1,s2…)。或者直接跟上元素,形如:append(s1,1,2,3)。