Golang ponteiros

Golang ponteiros
Um ponteiro na programação refere -se à variável usada para armazenar o endereço de memória de outra variável no sistema. O endereço de memória da variável é expresso em formato hexadecimal começando com 0x.

Os ponteiros são úteis, pois nos permitem armazenar a memória de um endereço em que os dados mantidos por uma variável são armazenados. Usando ponteiros, determinamos o valor armazenado pela variável naquele endereço de memória.

Neste artigo para iniciantes, discutiremos como começar com dicas na linguagem de programação Go.

Golang declare variável

Declaramos um ponteiro da mesma forma que declaramos uma variável normal. No entanto, usamos o operador de desreferência para mostrar que a variável contém um ponteiro.

Antes de declarar uma variável, há dois operadores com o qual precisamos estar familiarizados:

  1. * - O asterisco na declaração de ponteiro é conhecido como operador de desreferência. É usado para declarar um valor de ponteiro e acessar o valor armazenado em um endereço de memória específico.
  2. & - No ponteiro, o operador de endereço é usado para acessar o endereço de memória de uma variável. Também pode retornar o endereço da variável.

A sintaxe abaixo mostra como declarar uma variável de ponteiro:

var pointer_name *data_type

Por exemplo, o código abaixo declara uma variável de ponteiro "PTR" que mantém o endereço de INT Tipos.

var ptr *int

Golang inicializa o ponteiro

Podemos inicializar um ponteiro alocando o endereço de memória de uma variável usando o operador de endereço, mostrado acima.

Um exemplo é como mostrado:

Pacote principal
importar "fmt"
func main ()
// Declare a variável
x: = 100
// declarar e inicializar o ponteiro
var ptr *int = & x
// Endereço de impressão
fmt.Println (PTR)

No exemplo acima, começamos declarando uma variável segurando um valor inteiro. Em seguida, criamos um ponteiro segurando o endereço de memória da variável.

Depois de imprimir o endereço, devemos obter um exemplo de saída como mostrado:

$ go run ponteiro.ir
0xc000018098

Também podemos declarar uma variável e definir o valor posteriormente no código. Um exemplo é como mostrado:

Pacote principal
importar "fmt"
func main ()
// Declare a variável
x: = 100
// declarar
var ptr *int
ptr = & x
// Endereço de impressão
fmt.Println (PTR)

Aqui, declaramos o ponteiro e depois definimos seu valor usando o operador de endereço.

Ponteiro de Golang Nil

Se você declarar um ponteiro e não atribuir um valor, o ponteiro contém um valor nulo. Por exemplo:

Pacote principal
importar "fmt"
func main ()
var ptr *int
fmt.Println (PTR)

O código acima retorna nil.

Tipo de ponteiro

Em nosso exemplo, declaramos o tipo de ponteiro. Isso significa que o ponteiro só pode manter a memória endereçada do tipo de dados especificado.

Se você tentar armazenar o endereço de outro tipo, o compilador retornará um erro, como mostrado no exemplo abaixo:

Pacote principal
importar "fmt"
func main ()
// Declare a variável
STR: = "Olá"
var ptr *int
ptr = & str
// Endereço de impressão
fmt.Println (PTR)

No exemplo acima, declaramos uma variável com tipo int int. No entanto, atribuímos um endereço de um tipo de string.

O compilador retorna um erro como:

.\ ponteiro.GO: 11: 6: Não é possível usar e str (tipo *string) como tipo *int na atribuição

Para evitar isso, você pode usar o método de declaração literal de ponteiro. Por exemplo, podemos fazer:

Pacote principal
importar "fmt"
func main ()
STR: = "Olá"
ptr: = & str
fmt.Println (PTR)

O exemplo acima permite que o compilador determine o tipo de endereço para manter no ponteiro especificado.

Dereferência de Ponteiro de Golang

Para acessar o valor armazenado em um endereço específico, podemos usar o operador de desreferência. Um código de exemplo é como mostrado:

Pacote principal
importar "fmt"
func main ()
x: = 100
ptr: = & x
fmt.Println ("x:", x)
fmt.Println ("Endereço:", PTR)
fmt.Println ("Valor no endereço:", *ptr)

O código acima usa o operador de desreferência para obter o valor armazenado no endereço mantido pelo ponteiro "PTR"

A saída resultante é como:

X: 100
Endereço: 0xc000018098
Valor no endereço: 100

Conclusão

Este guia orienta você pelo básico de trabalhar com dicas em Go. Usando ponteiros, você pode acessar e armazenar o endereço de memória de uma variável. Você também pode usar o ponteiro para acessar a variável armazenada em um endereço de memória específico.

Obrigado pela leitura!