golang 포인터 사용법

WBOY
풀어 주다: 2023-05-19 09:02:36
원래의
958명이 탐색했습니다.

Golang은 효율성, 단순성, 보안 등의 기능을 갖춘 오픈 소스 프로그래밍 언어이므로 웹 개발, 클라우드 컴퓨팅, 네트워크 프로그래밍, 운영 체제 및 기타 분야에서 널리 사용됩니다. Golang에서 포인터는 매우 중요한 개념입니다. 개발자가 Golang 포인터의 사용법을 익히는 것은 매우 중요합니다.

1. 포인터의 정의와 선언

Golang에서 포인터는 다른 변수의 주소를 저장하는 데 사용되는 변수입니다. 포인터는 변수 자체의 값이 아닌 변수의 주소를 저장하므로 포인터 변수의 값은 주소여야 합니다. 포인터에도 고유한 유형이 있으며 해당 유형은 포인터가 가리키는 변수의 유형에 따라 달라집니다. Golang에서 포인터 변수를 정의하고 선언하는 방법은 다음과 같습니다.

var ptr *int             // 定义一个指向整型的指针变量
var ptr1 *string         // 定义一个指向字符串的指针变量
로그인 후 복사

포인터 변수의 명명 규칙은 다른 변수와 동일하며 문자 또는 밑줄로 시작하며 문자, 숫자, 밑줄을 포함할 수 있습니다.

2. & 및 * 연산자

Golang에서는 & 및 연산자가 포인터 연산의 핵심입니다. & 연산자는 변수의 주소를 가져오는 데 사용되며 연산자는 포인터 변수가 가리키는 변수의 값을 가져오는 데 사용됩니다. 다음 코드는 & 및 * 연산자를 사용하는 방법을 보여줍니다.

var num int = 10          // 定义一个整型变量
var ptr *int               // 定义一个指向整型的指针变量
ptr = &num               // 将num的地址赋值给ptr
fmt.Println("num的值:", num)            // 输出:10
fmt.Println("ptr的值:", ptr)            // 输出:0xc042036018
fmt.Println("ptr指向的值:", *ptr)      // 输出:10
로그인 후 복사

먼저 정수 변수 num을 정의한 다음 정수를 가리키는 포인터 변수 ptr을 정의합니다. & 연산자를 사용하여 num의 주소를 가져와서 이를 ptr 변수에 할당합니다. 마지막으로 * 연산자를 사용하여 ptr이 가리키는 변수의 값을 가져옵니다.

3. nil 포인터

Golang에서는 포인터 변수가 초기화되지 않으면 해당 값이 nil로 설정되어 잘못된 주소를 가리킨다는 것을 나타냅니다. 다음은 nil 포인터를 사용하는 간단한 예입니다.

var ptr *int          // 定义一个指向整型的指针变量
if ptr == nil {
   fmt.Println("ptr是一个空指针")
}
로그인 후 복사

이 예제 코드에서는 정수를 가리키는 포인터 변수 ptr을 정의합니다. 할당된 메모리 주소가 없으므로 자동으로 nil로 설정됩니다. if 문에서는 ptr이 비어 있는지 판단하여 포인터 변수가 초기화되었는지 확인합니다.

4. 함수 매개변수로서의 포인터

Golang에서는 포인터를 사용하여 함수 매개변수를 전달할 수 있습니다. 이렇게 하면 원래 변수의 값을 복사하는 대신 함수 내에서 수정할 수 있습니다. 다음은 포인터를 함수 매개변수로 사용하는 예입니다.

func main() {
   var num int = 10
   fmt.Println("调用函数前 num 的值:", num)    // 输出:10
   changeNum(&num)
   fmt.Println("调用函数后 num 的值:", num)    // 输出:20
}

func changeNum(p *int) {
   *p = 20
}
로그인 후 복사

이 예에서는 정수 포인터 매개변수 p가 있는changeNum이라는 함수를 정의합니다. main 함수에서는 정수 변수 num을 정의하고 해당 주소를changeNum 함수에 전달합니다. ChangeNum 함수에서는 p 포인터를 사용하여 원래 num 변수의 값을 수정합니다.

5. 새로운 함수

Golang에서는 새로운 함수를 사용하여 힙의 포인터 변수에 대한 메모리 공간을 할당할 수 있습니다. new 함수는 새로 할당된 메모리에 대한 포인터를 반환합니다. 다음은 new 함수를 사용하는 예입니다.

ptr := new(int)            // 为整型指针变量分配内存空间
*ptr = 10                // 给它指向的整数变量赋值
fmt.Println("ptr的值:", ptr)          // 输出:0xc042036030
fmt.Println("ptr指向的值:", *ptr)    // 输出:10
로그인 후 복사

이 예에서는 new 함수를 사용하여 정수 포인터 변수 ptr에 대한 메모리 공간을 할당합니다. 그런 다음 그것에 대해 작업을 수행하고 그것이 가리키는 정수 변수에 값을 할당하고 그 값을 인쇄합니다.

요약하자면 포인터는 Golang에서 매우 중요한 개념이며 시스템 프로그래밍 및 데이터 구조에 폭넓게 적용됩니다. Golang 포인터 사용법을 익히면 개발자가 Golang의 작동 메커니즘을 더 잘 이해하고 Golang 프로그램을 더 효율적으로 작성하는 데 도움이 될 수 있습니다.

위 내용은 golang 포인터 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿