本文由go語言教學專欄為大家介紹Go Pointer指針是什麼?要掌握的知識點有哪些? Pointer 指標的 11 個知識點,希望對需要的朋友有幫助!
指標上寫出優良程式碼最重要的部分之一。在這篇文章中,我們將探索指標是什麼,以及如何在 Go Pointer指針是什麼?要掌握的知識點有哪些? 中使用它們。
1. 什麼是指標?
指標是儲存其指向位址的變數。特定類型的指標只能指向該類型(資料型別不可變)。
2. Go Pointer指針是什麼?要掌握的知識點有哪些?Lang 指標語法
指標的語法非常簡單。以下是 Go Pointer指針是什麼?要掌握的知識點有哪些? 中指標聲明的語法。
var ptr *typevar ptrint *int // 指向 int 的指针
指標的零值是 nil。
3. Go Pointer指針是什麼?要掌握的知識點有哪些? 中指標的初始化
類型的指標使用&
對其進行初始化:
package mainimport ( "fmt")func main() { var q int = 42 var p *int // declare the pointer p = &q // initialize the pointer fmt.Println(p) // 0x40e020}
4. Go Pointer指針是什麼?要掌握的知識點有哪些? 指標取值
指標取值表示取得指標所儲存的位址內的值。以下是使用*
運算子執行指標取值運算的範例:
package mainimport ( "fmt")func main() { var q int = 42 var p *int p = &q fmt.Println(p) // 0x40e020 fmt.Println(*p) // 42}
5. Go Pointer指針是什麼?要掌握的知識點有哪些?Lang 中指標的指標
指標指標的位址為一個數值,此數值也可以被賦值給其他變數。因此,我們可以創建間接層級。這些間接等級有時會產生不必要的混淆,所以請謹慎使用。
package mainimport ( "fmt")func main() { i := 64 j := &i // j 是 int 类型的指针 k := &j // k 是存放指针地址的指针,也是 int 类型 fmt.Println(i) // 64 fmt.Println(j) // 0x40e020 fmt.Println(*j) // 64 (value inside that address) fmt.Println(k) // 0x40c138 fmt.Println(*k) // 0x40e020 (address of j)}
6. 指向介面的指標
指標可以指向任何東西,甚至可以指向介面。當使用空介面時,傳回的值為 nil。
package mainimport ( "fmt")func main() { var a interface{} b := &a fmt.Println(b) // 0x40c138 fmt.Println(*b) // <nil>}</nil>
下面是一個使用有指標介面的範例。
package mainimport ( "fmt")// 定义接口type Bird interface{ fly()}type B struct{ name string}// 实现它func (b B)fly() { fmt.Println("Flying...")}func main() { var a Bird = B{"Peacock"} b := &a fmt.Println(b) // 0x40c138 fmt.Println(*b) // {Peacock}}
這裡 「a」 是一個 struct 類型的 Bird,然後用於介面類型,如您所見。這就是多態的使用。 Go Pointer指針是什麼?要掌握的知識點有哪些? 允許使用 介面來實現多態. 因此,您可以看到指向結構或介面的指標是 Go Pointer指針是什麼?要掌握的知識點有哪些? 中必不可少的工具。
7. 指標作為函數參數
指標可以在 函數 中作為參數使用。與直接使用值相比,它有一些優勢。使用指標作為參數是將大物件傳遞給函數的一種非常有效的方式。因此,使用它是一個巨大的最佳化。
package mainimport ( "fmt")//声明指针参数func f(a *int) { fmt.Println(*a)}func main() { var a int = 42 // 传递地址 f(&a) // 42}
使用大型物件可以減緩執行時間,這是將指標傳遞給結構體的範例。這是處理大物件的有效方法。
package mainimport ( "fmt")type Human struct { name string age int place string}func f(h *Human) { fmt.Println("The user", (*h).name, "is", (*h).age, "years old and he is from", (*h).place)}func main() { john := Human{"John", 36, "Las Vegas"} f(&john) // The user John is 36 years old and he is from Las Vegas}
取消引用結構時要小心。如果您使用它像*structname.field1
那麼它會拋出錯誤。 正確的方法是(*structname).field1
。
在函數內部使用指標會使值“可變”,除非它的參數為const,因此,每當我們想要更改一個值時,我們應該使用指向該值的指標作為函數參數,然後進行必要的修改。
8. Go Pointer指針是什麼?要掌握的知識點有哪些? 中的「new」函數
Go Pointer指針是什麼?要掌握的知識點有哪些? 中的 new 函數傳回一個指向類型的指標。
package mainimport ( "fmt")func main() { ptri := new(int) *ptri = 67 fmt.Println(ptri) // 0x40e020 fmt.Println(*ptri) // 67}
9. 從函數傳回指標
可以像其他值一樣從函數傳回任何類型的指標。這真的很簡單。我們不會直接傳回值,而是傳回該值的位址。
package mainimport ( "fmt")func p() *int { // 将返回类型指定为指针 v := 101 // 返回地址 return &v}func main() { n := p() fmt.Println(n) // 0x40e020 fmt.Println(*n) // 101}
10. 指向函數的指標
指向函數的指標在 Go Pointer指針是什麼?要掌握的知識點有哪些? 中是隱含工作的。這意味著我們不需要將其聲明為指標。
package mainimport ( "fmt")func main() { f := func() { fmt.Println("a function") } pf := f pf() // 一个函数}
11. Go Pointer指針是什麼?要掌握的知識點有哪些? 中使用指標要記住的事項
Go Pointer指針是什麼?要掌握的知識點有哪些? 中不允許進行指標運算。因此,我們不能像在 C/C 中那樣執行一元遞增或遞減之類的操作。
我們可能想要使用指向數組的指針,但是使用切片是一個更好的選擇。切片比指向數組的指標用途廣泛得多。程式碼非常簡潔,讓我們的工作更容易。因此,盡可能使用切片。
#原文網址:https://golangdocs.com/pointers-in-golang
#翻譯網址:https://learnku.com/go/t/60880
以上是Go Pointer指針是什麼?要掌握的知識點有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

選擇Golang的原因包括:1)高並發性能,2)靜態類型系統,3)垃圾回收機制,4)豐富的標準庫和生態系統,這些特性使其成為開發高效、可靠軟件的理想選擇。

Golang適合快速開發和並發場景,C 適用於需要極致性能和低級控制的場景。 1)Golang通過垃圾回收和並發機制提升性能,適合高並發Web服務開發。 2)C 通過手動內存管理和編譯器優化達到極致性能,適用於嵌入式系統開發。

Golang在編譯時間和並發處理上表現更好,而C 在運行速度和內存管理上更具優勢。 1.Golang編譯速度快,適合快速開發。 2.C 運行速度快,適合性能關鍵應用。 3.Golang並發處理簡單高效,適用於並發編程。 4.C 手動內存管理提供更高性能,但增加開發複雜度。

Golang在Web服務和系統編程中的應用主要體現在其簡潔、高效和並發性上。 1)在Web服務中,Golang通過強大的HTTP庫和並發處理能力,支持創建高性能的Web應用和API。 2)在系統編程中,Golang利用接近硬件的特性和對C語言的兼容性,適用於操作系統開發和嵌入式系統。

Golang和C 在性能對比中各有優劣:1.Golang適合高並發和快速開發,但垃圾回收可能影響性能;2.C 提供更高性能和硬件控制,但開發複雜度高。選擇時需綜合考慮項目需求和團隊技能。

Golang适合高性能和并发编程场景,Python适合快速开发和数据处理。1.Golang强调简洁和高效,适用于后端服务和微服务。2.Python以简洁语法和丰富库著称,适用于数据科学和机器学习。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。