值未在go lang中的输入数组中获得追加
我是围棋新手。我将数组作为输入。我正在尝试将整数值追加到数组中值未在go lang中的输入数组中获得追加,go,Go,我是围棋新手。我将数组作为输入。我正在尝试将整数值追加到数组中 package main import "fmt" func main() { input := []int{1, 2} fmt.Println("input:", input) addnumber(input) fmt.Println("output:", input) } func addnumber(input []int) {
package main
import "fmt"
func main() {
input := []int{1, 2}
fmt.Println("input:", input)
addnumber(input)
fmt.Println("output:", input)
}
func addnumber(input []int) {
input = append (input,3)
}
如评论中所述。您必须对
addnumber
函数中的值进行处理。我更改了它,以便返回新的切片
package main
import "fmt"
func main() {
input := []int{1, 2}
fmt.Println("input:", input)
input = addnumber(input)
fmt.Println("output:", input)
}
func addnumber(input []int) []int {
return append (input,3)
}
由于某种原因,内置的
append()
会返回新的切片,但是您的addNumber()
不会返回。您的addNumber()
仅将新切片分配给本地输入
切片。返回新切片并将其分配给main()
中的input
变量。这不是一个数组,它是一个切片副本,这是新手经常遇到的问题。您的函数更改了局部变量输入
,但没有任何东西会将此更改返回给调用者。这是否回答了您的问题?选项1甚至不应该是一个选项。指向数组的指针产生的问题比它们解决的问题多。@corey指向数组的指针会出现什么样的问题?它们已经是指针了。
package main
import "fmt"
func main() {
input := []int{1, 2}
fmt.Println("input:", input)
addnumber(&input)
fmt.Println("output:", input)
}
func addnumber(input *[]int) {
*input = append (*input,3)
}
package main
import "fmt"
func main() {
input := []int{1, 2}
fmt.Println("input:", input)
input = addnumber(input)
fmt.Println("output:", input)
}
func addnumber(input []int) []int {
return append (input,3)
}