Golang의 포인터

golang의 포인터 개념은 매우 진지하게 다루어야 하는 근본적인 주제 중 하나이므로 이 포스트를 작성하는 이유입니다. 초보자로서 우리가 포인터라고 부르는 앰퍼샌드"&"및 별표"*"기호의 사용을 본 적이 있을 것입니다.

포인터는 특정 메모리 주소(변수 이름 = 16진 주소)에 데이터를 저장하는 데 사용되는 특수 변수입니다. 메모리 주소는 16진수 형식으로 제공됩니다(0x50c108 등과 같이 0x로 시작).

포인터의 의미를 설명하기 전에 변수가 무엇을 의미하는지 논의할 것입니다. 변수는 데이터가 저장된 메모리 위치의 이름입니다. 저장된 데이터에 액세스하려면 해당 데이터가 저장된 위치 또는 주소를 알아야 합니다.

이전 단락을 이해했다면 이 단락을 건너뛰십시오. 당신이 이해하지 못한다면 집에 설명을 가져올 때 걱정할 필요가 없습니다. 'abia'는 데이터를 저장하는 메모리 주소(0x50c108)를 보유하는 변수 이름이고, 메모리 주소는 사람이 쉽게 기억하지 못하는 16진수 코드이므로 "abia"와 같은 명명된 읽을 수 있는 규칙을 사용하여 메모리의 주소를 나타냅니다. 데이터 "nnamdi"가 있는 곳. "nnamdi"를 찾으려면 메모리 주소 또는 "nnamdi"값을 보유하는 변수를 알아야 합니다.

프로그램에 포인터가 필요한 이유는 무엇입니까?

우리는 예를 들어 이것을 더 시연할 것입니다. 이 예에서는 변수 a와 b 안에 16진수를 저장할 것이며 값 유형은 int입니다. 아래 코드 조각은 다른 변수의 메모리 위치를 가리키지 않기 때문에 포인터가 아니며 아래와 같이 a와 b에 16진수 값만 저장합니다.


// Variables storing the hexadecimal values 

package main

import "fmt"

func main() {

    // storing the hexadecimal
    // values in variables
    a := 0xFF
    b := 0x9C

    // Printing out variable values 
    fmt.Printf("Type of variable a is %T\n", a)
    fmt.Printf("Value of a in hexadecimal is %X\n", a)
    fmt.Printf("Value of a in decimal is %v\n", a)

    fmt.Printf("Type of variable b is %T\n", b)
    fmt.Printf("Value of b in hexadecimal is %X\n", b)
    fmt.Printf("Value of b in decimal is %v\n", b)   

}


산출:Type of variable a is int
Value of a in hexadecimal is FF
Value of a in decimal is 255
Type of variable b is int
Value of b in hexadecimal is 9C
Value of b in decimal is 156

포인터는 다른 변수의 위치나 주소를 가리킬 뿐만 아니라 메모리에서 해당 변수가 있는 값을 가져오는 방법을 찾습니다. 변수의 위치가 동일한 변수의 주소와 다른지 묻고 싶을 수 있습니다. 변수, 대답은 아니오? 변수 이름은 긴 16진수 주소 지정 체계를 나타내는 쉬운 방법일 뿐입니다.

포인터 선언 및 초기화

이 블로그 게시물의 2가지 중요한 키워드는 다음과 같습니다.
  • 연산자: 이 기호는 포인터 변수를 선언하고 주소에 저장된 값에 액세스하는 데 사용되는 역참조 연산자라고 합니다.

  • 다음은 다른 변수의 주소 값을 저장하는 포인터 선언의 예입니다.

    포인터 선언의 예

     var y string = "String Y"
    //Innitialized x with memory address of y
     x := &y
     fmt.Printf("Prints the value of y", *x) // String Y
     fmt.Printf("Prints the address of x", &x) // 0xc000100018
     fmt.Printf("Prints the address of y", x) // 0xc000010230   
    

    좋은 웹페이지 즐겨찾기