Go · Avançado · Inglês · Técnico
unsafe
Pacote que dá acesso a operações fora do sistema de tipos do Go, como unsafe.Pointer, Sizeof e String, para converter ponteiros e inspecionar a memória.
Onde usar
Raramente aparece em código de aplicação; é usado em bibliotecas de alto desempenho, serialização e interação com C. Um uso incorreto causa corrupção de memória sem aviso do compilador.
Em código
b := []byte("olá")
s := unsafe.String(&b[0], len(b))
b[0] = 'O'
fmt.Println(s) // Olá: compartilha memóriaExemplos
Avoid unsafe unless you really need the speed.
Evite o unsafe a menos que você precise mesmo da velocidade.
The string shares memory with the byte slice because of unsafe.
A string compartilha memória com a slice de bytes por causa do unsafe.
Cuidado
Não é coberto pela garantia de compatibilidade do Go 1: um truque com unsafe pode quebrar em uma versão nova.