<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國際加速解決方案。 廣告
                new和make是內建的兩個函數,主要用來創建分配類型內存。 #### 1、new函數是內建函數,函數定義為 ``` func new(Type) *Type ``` new 的作用是初始化一個指向類型的指針(*Type ),使用new函數來分配空間。傳遞給new 函數的是一個類型,不是一個值。返回值是 指向這個新分配的零值的指針。 #### 實例 ~~~ package main import ( "fmt" ) func main() { a := new([]int) fmt.Println(a) //輸出&[],a本身是一個地址 } ~~~ 運行結果: &[] #### 實例2 ~~~ package main import "fmt" func main() { var i *int fmt.Println("沒有new之前I得值為:", i) i = new(int) fmt.Println("new之后I得值為:", i) } ~~~ 執行結果: ``` 沒有new之前I得值為: <nil> new之后I得值為: 0xc0000aa058 ``` #### 2、make函數是內建函數,函數定義為 #### 定義 `make`也是用于內存分配的,make(T, args)函數的目的與new(T)不同,make只用于`chan`、`map`以及slice(切片)的內存創建,而且它返回的類型就是這三個類型本身,而不是他們的指針類型,因為這三種類型就是引用類型,所以就沒有必要返回他們的指針了。 ``` func make(t Type, size ...IntegerType) Type ``` 第一個參數是一個類型,第二個參數是長度。 make返回類型是 T(不是T*)的一個初始化的(不是零值)的實例。 make實例: ~~~ var slice1 []type = make([]type, len) 也可以簡寫為 slice1 := make([]type, len) ~~~ 實例: ~~~ package main import ( "fmt" ) func main() { b := make([]int, 1) fmt.Println(b) //輸出[0],b本身是一個slice對象,其內容默認為0 } ~~~ 運行結果: [0] #### 注意: a、簡單來說,new只是分配內存,不初始化內存; 而make即分配又初始化內存。所謂的初始化就是給類型賦初值,比如字符為空,整型為0, 邏輯值為false等。 b、當對slice,map以及channel進行初始化時,使用make比new方式要好,而其他形式的則利用new進行初始化 c、new 的作用是初始化一個指向類型的指針(*T),make 的作用是為 slice,map 或 chan 初始化并返回引用(T)。 d、二者都是內存的分配(堆上),但是`make`只用于slice、map以及channel的初始化(非零值);而`new`用于類型的內存分配,并且內存置為零。 e、`make`返回的還是這三個引用類型本身;而`new`返回的是指向類型的指針。
                  <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>

                              哎呀哎呀视频在线观看