뿐만 아니라 그들이 동일한 결과 값을 제공 할 수 있지만, 우리가 ...
// Adapted from http://tour.golang.org/#30
package main
import "fmt"
type Vertex struct {
X, Y int
}
func main() {
v := &Vertex{}
v2 := new(Vertex)
fmt.Printf("%p %p", v, v2)
}
뭔가에게 두 가지를 할당하고 그 값을 보면 ... 우리는 그들이 실제로있는 것을 볼 수 있습니다 연속적인 메모리 슬롯에 할당됩니다. 일반적인 출력 : 0x10328100 0x10328108
. 이것은 구현 세부 사항인지 사양의 일부인지 확실하지 않지만 둘 다 동일한 풀에서 할당되었음을 보여줍니다.
Play around with the code here.
the language spec에 따라, 새와 초기화에 대해서는
: 이동 함수는 오버로드 할 수 없기 때문에 The built-in function new takes a type T and returns a value of type *T. The memory [pointed to] is initialized as described in the section on initial values.
,이는 가변 인자 함수가 아닙니다은 초기화 데이터를 전달 할 수있는 방법이 없습니다. 대신 go는 유형 및 모든 구성원 필드에 대해 적절하다고 판단되는 버전으로 0
을 초기화합니다.
새 필드를 사용하여 필드를 초기화하는 방법이 있습니까? – allyourcode
@allyourcode는 그렇게 생각하지 않습니다. http://stackoverflow.com/questions/4498998/how-to-initialize-members-in-go-struct – Woot4Moo
문서에 'new' 함수를 포함시킨 이유는 무엇입니까? 'go'는 중복되지 않는 기능에 관한 것이 전부라고 생각했습니다. –