Tôi đã mã sau:Làm thế nào để đặt bất kỳ giá trị để giao tiếp {}
package main
import (
"fmt"
)
type Point struct {
x,y int
}
func decode(value interface{}) {
fmt.Println(value) // -> &{0,0}
// This is simplified example, instead of value of Point type, there
// can be value of any type.
value = &Point{10,10}
}
func main() {
var p = new(Point)
decode(p)
fmt.Printf("x=%d, y=%d", p.x, p.y) // -> x=0, y=0, expected x=10, y=10
}
Tôi muốn thiết lập giá trị của bất kỳ loại với giá trị truyền cho decode
chức năng. Có thể trong Go, hay tôi hiểu nhầm điều gì đó?
http://play.golang.org/p/AjZHW54vEa
Go là pass-by-value . Gán cái gì đó cho một biến cục bộ không bao giờ ảnh hưởng đến bên ngoài. Bạn có thể sử dụng một kiểu tham chiếu (như một con trỏ) để thay đổi thứ mà nó trỏ đến để chia sẻ trạng thái; nhưng sau đó nó sẽ cần đến một con trỏ của đúng loại để bạn có thể gán một cái gì đó cho điều nó trỏ đến. – newacct