WTF *& NはGolangにおけるポインタである


ポインターadalah lokasiディマナデータpada variabel disimpan.
pada dasarnya semua tipeのデータポインターadalah berupa長い16進数のyn berisi値berupaメモリアドレスdimana lokasiデータdisimpan,yang berarti semua tipe data pada value dari semua pointer itu sama,endh itu berasal dari integer,float,char maupun string,an lain lain

リファレンス


参照adalah nilai Yang Tidakは、Secara Langsung di誘惑DIMANA DIA dibuat namun menunjukkan lokasi dimana dia dibuatをdiaksesします.
BiasanyaレファレンスDisimpanパダメモリataupun記憶装置、参照adalah sebuahエイリアスYang Menunjuk Kephada sebuah Pointer、Setiap参照Memunki Kepada sebuah Setulap Tamulis AtnaナマPenerbit Paada Sevuahウェブサイト、北Punya Referensi Dialana Keduanya、Namun Ahan Menunjukkku Buku
コントウシーダーハンニャ
package main

import (
    "fmt"
)

func main() {
  // Membuat Reference bernama names
  names := []string{"Fauzan"}
  // Membuat Reference "publisher"
  publisher := names // Menggunakan Reference "names"
  // menggunakan pointer yang sama
  fmt.Println(&names)
  fmt.Println(&publisher)
}

catatan: untuk menampilkan memory address pada pointer di Golang, Anda bisa menggunakan simbol &


ピンゲンギ


PenggunaanのポインターSanatパワフル、Nanunディバリック“Sanat強力な”terseapteranapancancan、dimana penggunaanポインタadalah untuk menghindari versiコピーdari sebuah variabel、sedangkan menggunakanポインタKa Magubah Value Yang Berada padaメモリアドレス.Masalahヤンdapat munculダリPenggunaanヤンサラadalahメモリリーク.
Untuk Menghindariメモリリークpada sebuahポインタ、anda cukup melakukanはulang pada参照を割り当てますnil
oldReference = nil
INI Mencegahメモリは、Skallus MencegahダリMeninggalkanレファレンスラマを漏らします.MulakukanはUlang Dengan値を割り当てますnil パダゴングTidak Akan MembuatレファレンスラマMenjadiガベージコレクション、Karena Msih Menjadi参照ダリリファレンスselanjutnya.
ガーベージコレクターpada goldasarkan algoritma三色のマークと掃引、dimana値pada memorinil .
ペパーコッドhttps://go.dev/src/container/list/list.go :
// remove removes e from its list, decrements l.len, and returns e.
func (l *List) remove(e *Element) *Element {
    e.prev.next = e.next
    e.next.prev = e.prev
    e.next = nil // avoid memory leaks
    e.prev = nil // avoid memory leaks
    e.list = nil
    l.len--
    return e
}
Beberapa bahasa pemrograman hlls(高レベルの言語)menyembunykan penggunaanポインタ,salah satu contohnya adalah JavaScript,mewajibkan untuk menggunakanレファレンス,データのDelukukan menggunakanコピーdari参照を渡すダン

ペググアンのポインター


Denini Saaya Ahan Memoci Contoh Kasus Penggunaan Popas pada golang , dimana sebuah setter method akan menggunakan , saya biasanya menggunakan contoh dengan javascript namun karena JavaScript JavaScript Tidak Bisa Manggunakanポインタsecara langsung , saya akan menggunakan golang sebagai contohnya :
package main

import (
    "fmt"
)

type Person struct {
  fullName string;
}

func (p Person) Name() string {
    return p.fullName
}

// ini tidak akan mempengaruhi reference pada fungsi main()
// karena kita hanya mengubah versi "copy" dari reference
// tersebut (person).
// func (p Person) SetName(fullName string) {
//     p.fullName = fullName
// }

// kita akan menggunakan pointer receiver untuk mempengaruhi
// reference pada fungsi main() karena dia akan menggunakan
// memory address yang sama seperti pada fungsi main()
func (p *Person) SetName(fullName string) {
    p.fullName = fullName
}

func main() {
  person := Person{}

  person.SetName("Fauzan")
  fmt.Println(person.Name())

  person.SetName("Muhammad Fauzan")
  fmt.Println(person.Name())
}
Jadi seperti itulah penjelasan mengenai詩人ダンBagaimanaコントウpenggunaannya di golang.
<書評>石山照馬著『アーティケル・イニ』😄
参考文献
https://stackoverflow.com/questions/39052967/setting-pointers-to-nil-to-prevent-memory-leak-in-golang
https://www.digitalocean.com/community/conceptual_articles/understanding-pointers-in-go
https://go.dev/tour/moretypes/1