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 像函数传递指针参数通过引用或地址传参,在函数调用时可以改变其值