golang 指標淺析

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

指標這個東西,不管是在哪個語言裡,都算是比較難懂的概念,其實只要解釋清楚,指標的概念並不難理解。

golang中列印地址的方法是:fmt.Printf("%p", x),x表示要列印的資料結構

package mainimport "fmt"func main() {    ss := []string{"a", "b", "c"}    //小張=你    fmt.Printf("資料地址=%p,指標地址=%p\n", ss, &ss)    ss1 := ss    //張三=你    fmt.Printf("資料地址=%p,指標地址=%p\n", ss1, &ss1)        ss = []string{"d"}    //小張=另外一個同事    fmt.Printf("資料地址=%p,指標地址=%p\n", ss, &ss)}上述代碼的列印結果:資料地址=0xc04203bd70,指標地址=0xc04203e3c0資料地址=0xc04203bd70,指標地址=0xc04203e440資料地址=0xc0420381e0,指標地址=0xc04203e3c0

我們可以看到資料地址是一樣的,但是變數本身的地址是不一樣的。這個怎麼理解呢?從生活的角度來解釋可能比較容易:你在你的部門叫張三,也有人叫你小張,或者叫你小三,假定你是部門裡唯一叫這些名字的,那張三,小張,小三都代表了你這個人。你這個人,就是我們上面說的資料地址,張三,小張,小三,都是指標變數,它們都指向你這個人。

指標指向是有可能變化的,例如部門裡新來了一個姓張年齡比你小的同事張四,那麼在你們部門中小張這個名字,指向就變成張四。

這裡的假設有幾個前提:

  • 限定在部門中,也就是一台主機。
  • 一個名字,只能指向一個人。也就是指標需要指向具體的一個資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.