>  기사  >  백엔드 개발  >  Go 언어에는 포인터가 있나요?

Go 언어에는 포인터가 있나요?

藏色散人
藏色散人원래의
2021-01-18 14:52:353884검색

go 언어에는 포인터가 있습니다. go 언어에서 포인터를 사용하면 간단히 몇 가지 작업을 수행할 수 있습니다. 포인터 형식의 선언 구문은 "var var_name *var-type"입니다. 여기서 "var-type" 매개변수는 포인터 유형이고 " var_name" "은 포인터 변수의 이름이고 * 기호는 해당 변수가 포인터로 사용됨을 지정하는 데 사용됩니다.

Go 언어에는 포인터가 있나요?

이 기사의 데모 환경: Windows 7 시스템, Go1.11.2 버전, Dell G3 컴퓨터.

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에 대한 포인터입니다.

포인터 사용 방법

포인터 사용 프로세스:

  • 포인터 변수를 정의합니다.

  • 포인터 변수에 값을 할당합니다.

  • 포인터 변수에서 주소를 가리키는 값에 접근합니다.

포인터 유형 앞에 * 기호(접두사)를 추가하면 포인터가 가리키는 내용을 얻을 수 있습니다.

Example

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 포인터

포인터가 정의되고 어떤 변수에도 할당되지 않은 경우 해당 값은 nil입니다.

nil 포인터는 널 포인터라고도 합니다.

nil은 개념적으로 다른 언어의 null, None, nil 및 NULL과 동일하며 모두 0 또는 빈 값을 나타냅니다.

포인터 변수는 일반적으로 ptr로 축약됩니다.

다음 예 보기:

Example

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 언어에는 포인터가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.