1
resposta

diferença entre o operador & e *

Poderia por favor me explicar a diferença entre os operadores * e &, pois isso não foi passado e me perdi no sentido quando fui criar um server para o html.

1 resposta

Oi Carlos

Golang é uma linguagem que tem ponteiros. Um ponteiro contém o endereço de memória de um valor na memória.

Quando usamos * é um ponteiro para um valor.

var p *int

O operador & gera um ponteiro para seu operando.

i := 42
p = &i

O operador * denota o valor subjacente do ponteiro.

fmt.Println(*p) // ler i através do ponteiro p
*p = 21 // definir i por meio do ponteiro p

Isso é conhecido como "desreferenciamento" ou "indireção".

package main

import "fmt"

func main() {
    i, j := 42, 2701

    p := &i         // endereço de memória para i (ponteiro de i)
    fmt.Println(*p) // lê o valor de i através do ponteiro
    *p = 21         // altera o valor de i através do ponteiro
    fmt.Println(i)  // lê o novo valor de i

    p = &j         // ponteiro de J
    *p = *p / 37   // divide o valor de J usando o ponteiro
    fmt.Println(j) // verifica o novo valor de J
}