👏
Golangを書くときにミスしたこと
背景
以下のことを実現したいです
arr0 := []int{1,2,3,4,5}
arr1 := []int{}
after some transfer
arr0 := []int{}
arr1 := []int{5,4,3,2,1}
ミスしたコード
package main
import "fmt"
func main() {
arr0 := []int{
1,2,3,4,5,
}
arr1 := []int{}
fmt.Println(arr0, arr1)
transfer(&arr0, &arr1)
fmt.Println(arr0, arr1)
}
func transfer(arr0 *[]int, arr1 *[]int) {
tmp := make([]int, 0)
for i:=len(*arr0)-1;i>=0;i-- {
tmp = append(tmp, (*arr0)[i])
}
arr1 = &tmp
s := make([]int, 0)
arr0 = &s
}
正しいコード
func transfer(arr0 *[]int, arr1 *[]int) {
tmp := make([]int, 0)
for i:=len(*arr0)-1;i>=0;i-- {
tmp = append(tmp, (*arr0)[i])
}
*arr1 = tmp
s := make([]int, 0)
*arr0 = s
}
Discussion