Go 언어 포인터
Go 언어의 포인터는 배우기 쉽습니다. Go 언어의 포인터를 사용하면 일부 작업을 더 쉽게 수행할 수 있습니다.
다음으로 Go 언어 포인터를 단계별로 배워보겠습니다.
우리 모두는 변수가 컴퓨터 메모리 주소를 참조하는 편리한 자리 표시자라는 것을 알고 있습니다.
Go 언어의 주소 문자는 &입니다. 변수 앞에 사용하면 해당 변수의 메모리 주소가 반환됩니다.
다음 예는 메모리에 있는 변수의 주소를 보여줍니다.
package main import "fmt" func main() { var a int = 10 fmt.Printf("变量的地址: %x\n", &a ) }
위 코드를 실행한 결과는 다음과 같습니다.
变量的地址: 20818a220
이제 우리는 메모리 주소가 무엇인지 이해했습니다. 이며 액세스하는 방법입니다. 다음으로 포인터를 자세히 소개하겠습니다.
포인터란 무엇입니까
포인터 변수는 모든 값의 메모리 주소를 가리킬 수 있습니다.
변수 및 상수와 유사하게 포인터를 사용하기 전에 선언해야 합니다. 포인터 선언 형식은 다음과 같습니다.
var var_name *var-type
var-type은 포인터 유형, var_name은 포인터 변수 이름, * 기호는 변수가 포인터로 사용됨을 지정하는 데 사용됩니다. 다음은 유효한 포인터 선언입니다.
var ip *int /* 指向整型*/ var fp *float32 /* 指向浮点型 */
이 경우 이는 int 및 float32에 대한 포인터입니다.
포인터 사용법
포인터 사용 과정:
포인터 변수를 정의합니다.
포인터 변수에 값을 할당합니다.
포인터 변수에서 주소를 가리키는 값에 접근합니다.
포인터 유형 앞에 *(접두사)를 추가하면 포인터가 가리키는 내용을 얻을 수 있습니다.
package main import "fmt" func main() { var a int= 20 /* 声明实际变量 */ var ip *int /* 声明指针变量 */ ip = &a /* 指针变量的存储地址 */ fmt.Printf("a 变量的地址是: %x\n", &a ) /* 指针变量的存储地址 */ fmt.Printf("ip 变量的存储地址: %x\n", ip ) /* 使用指针访问值 */ fmt.Printf("*ip 变量的值: %d\n", *ip ) }
위 예제의 실행 출력은 다음과 같습니다.
a 变量的地址是: 20818a220 ip 变量的存储地址: 20818a220 *ip 变量的值: 20
Go null 포인터
포인터가 정의되고 어떤 변수에도 할당되지 않은 경우 해당 값 0입니다.
nil 포인터는 널 포인터라고도 합니다.
nil은 다른 언어의 null, None, nil, NULL과 개념적으로 동일하며 모두 0 또는 빈 값을 나타냅니다.
포인터 변수는 일반적으로 줄여서 ptr이라고 합니다.
다음 예 보기:
package main import "fmt" func main() { var ptr *int fmt.Printf("ptr 的值为 : %x\n", ptr ) }
위 예의 출력 결과는 다음과 같습니다.
ptr 的值为 : 0
Null 포인터 판단:
if(ptr != nil) /* ptr 不是空指针 */ if(ptr == nil) /* ptr 是空指针 */
Go 포인터 더 많은 콘텐츠
다음으로 Go 언어로 된 더 많은 포인터 애플리케이션을 소개하겠습니다:
内容 | 描述 |
---|---|
Go 指针数组 | 你可以定义一个指针数组来存储地址 |
Go 指向指针的指针 | Go 支持指向指针的指针 |
Go 像函数传递指针参数 | 通过引用或地址传参,在函数调用时可以改变其值 |