<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## **1:基本介紹** 1)基本數據類型,變量存的就是值,也叫值類型 2)獲取變量的地址,用&,比如: var num int,獲取num的地址: &num 分析一下基本數據類型在內存的布局. ![](https://img.kancloud.cn/34/4d/344d861794b82ff5e93f8e2c5d07d900_1046x170.png) 3)指針類型,指針變量存的是一個地址, 這個地址指向的空間存的才是值 比如。`var ptr *int = &num` 舉例說明: 指針在內存的布局. ``` package main import ( "fmt" ) func main(){ var i = 10 fmt.Println(&i) } ``` **運行結果** `0xc000014060` ``` package main import ( "fmt" ) func main(){ var i = 10 fmt.Println(&i) var per *int = &i fmt.Println("per = ",per) fmt.Println("per的地址是:",&per) fmt.Println("per指向的值是:",*per) } ``` **運行結果** ``` 0xc000014060 per = 0xc000014060 per的地址是: 0xc00000e030 per指向的值是: 10 ``` 獲取指針類型所指向的值、使用,*,比如。var pur *int,使用*pur獲取ptr指向的值 <br> <br> ## **2:案例演示** 1)寫一個程序,獲取一個int變量num的地址,并顯示到終端 2)將num的地址賦給指針ptr,并通過ptr去修改num的值. **案例1:** ``` package main import ( "fmt" ) func main(){ var sum int = 10 fmt.Println(&sum) } ``` **運行結果** `0xc0000b4008` <br> <br> **案例2:** 將num的值賦給per,通過per的指針去修改num的值 ``` package main import ( "fmt" ) func main(){ var num int = 10 var per *int = &num *per = 20 fmt.Println("num1",num) fmt.Println("num1的內存地址是:",&num) } ``` **運行結果** ``` num1 20 num1的內存地址是: 0xc000014060 ``` <br> <br> ## **3:課堂練習** **練習1:** 如下:是否可以編譯通過,如果不通過則會怎樣?? ``` var num int = 10 var per *int = num fmt.Println("num1",num) ``` **答:** 不通過,會報錯!因為在指針賦值的過程中,必須使用&num <br> **練習2:** ``` package main import ( "fmt" ) func main(){ var num int = 10 var per *float32 = &num fmt.Println("num",num) } ``` **運行結果** 答: 1,不能將&num3(type\*int)用作賦值中的type\*float32 2,類型不通過 <br> <br> **練習3:** 下方代碼是否可以編譯通過?,會輸出什么? ``` package main import ( "fmt" ) func main(){ var num int = 100 var num1 int = 200 var per *int = &num *per = 300 per = &num1 *per = 400 fmt.Println(num,num1,*per) } ``` <br> <br> ## **4:指針細節** 1) 值類型,都有對應的指針類型,形式為*數據類型,比如int的對應的指針就是 *int, float32對應的指針類型就是*float32, 依次類推。 2) 值類型包括:基本數據類型int系列, float系列, bool, string、數組和結構體struct
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看