Go 구조의 메모리 주소 액세스 및 저장
프로그래밍, 특히 복잡한 데이터 구조의 경우 메모리 주소와 포인터의 동작을 이해하는 것이 중요합니다. Go 구조체와 같습니다. 이 기사에서는 구조체 주소 인쇄 및 조작의 미묘한 차이에 대해 자세히 설명합니다.
다음 Go 프로그램을 고려하세요.
type Rect struct { width int name int } func main() { r := Rect{4,6} p := &r p.width = 15 fmt.Println("-----",&p,r,p,&r) }
이 프로그램을 실행할 때 _____0x40c130 {15 형식의 출력을 볼 수 있습니다. 6} &{15 6} &{15 6}. 이 출력은 메모리 위치에 대한 통찰력을 제공하지만 r 변수의 주소를 명시적으로 표시하지는 않습니다.
r의 주소를 직접 인쇄하려면 fmt.Println(에서 사용하는 기본 형식을 우회해야 합니다. ). 대신 출력을 제어하기 위해 형식 문자열을 지정할 수 있습니다. %p 동사는 포인터와 주소를 인쇄하는 데 사용됩니다. fmt.Println() 줄을 다음과 같이 수정하면 r의 주소가 인쇄됩니다.
fmt.Printf("%p\n", &r)
이렇게 하면 r의 주소가 0x414020과 같은 16진수 형식으로 출력됩니다.
추가로, r의 주소를 변수에 저장하려면 다음을 사용할 수 있습니다. 구문:
addr := &r
이것은 r의 메모리 주소를 변수 addr에 할당합니다. 그런 다음 addr을 사용하여 Rect 구조에 포함된 값에 간접적으로 액세스하거나 수정할 수 있습니다.
포인터와 주소로 작업할 때 사용법을 완전히 이해하려면 컨텍스트와 목적을 고려하는 것이 중요합니다.
위 내용은 Go 구조체의 메모리 주소에 어떻게 액세스하고 저장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!