WTF*&n은 Golang(바하사 버전)의 포인터입니다.
Pada dasarnya semua tipe data pointers adalah berupa long 16진수 yang berisi value berupa memory address dimana lokasi data disimpan, yang berarti semua tipe data pada value dari semua pointer itu sama, entah itu berasal dari integer, float, char maupun string, dan lain- 누워.
참조
참조 adalah nilai yang tidak diakses secara langsung di tempat dimana dia dibuat namun menunjukkan lokasi dimana dia dibuat.
Biasanya 참조 disimpan pada 메모리 ataupun 저장 장치, 참조 adalah sebuah 별칭 yang menunjuk kepada sebuah 포인터, setiap 참조 memiliki nama yang berbeda, analoginya seperti kita mencari buku berdasarkan nama penulis atau nama penerbit pada sebuah 웹사이트, kita punya referensi diantara keduanya, namun akan menunjukkan buku yang kita tuju juga.
Contoh sederhananya:
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 포인터 sangat powerful, namun dibalik "sangat powerful"tersebut terdapat ancaman, diman penggunaan 포인터 adalah untuk menghindari versi copy dari sebuah variabel, sedangkan menggunakan 포인터 kita mengubah value yang berada pada 메모리 주소. Masalah yang dapat muncul dari penggunaan yang salah adalah memory leaks.
메모리 누수가 세부 정보 포인터 및 메모리 누수를 할당할 때 참고할 내용을 참조하십시오
nil
.oldReference = nil
처음에 메모리 누수는 다음과 같습니다. Melakukan assign ulang dengan value baru selain
nil
pada golang tidak akan membuat 참조 lama menjadi 가비지 컬렉션, karena masih menjadi 참조 dari 참조 selanjutnya.Garbage Collector는 3색 마크 앤 스윕, Diman Value Pada Memori Akan Dibebaskan Jika Tidak Direferensikan Kemanapun, Diman Case Disini Adalah Dengan Menggunakan
nil
을 포함합니다.Seperti yang terlampir pada kode 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
}
HLLs(High Level Languages)는 포인터, 포인터, 자바스크립트, 참조, 전달 데이터 참조, 참조에 대한 참조를 포함합니다.
Contoh Penggunaan Pointers pada Golang
Disini saya akan memberi contoh kasus penggunaan pointers pada Golang, dimana sebuah setter method akan menggunakan, saya biasanya menggunakan contoh dengan Javascript namun karena Javascript tidak bisa menggunakan Pointers 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 pointers and bagaimana contoh penggunaannya di Golang.
Sekian terima kasih telah membaca artikel ini, semoga bermanfaat 😄
참조
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
Reference
이 문제에 관하여(WTF*&n은 Golang(바하사 버전)의 포인터입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fzn0x/pointers-wtfn-is-pointers-with-example-in-golang-bahasa-version-ei5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)