GO語言make()分配用法執行個體_Golang

來源:互聯網
上載者:User

本文執行個體講述了GO語言make()分配用法。分享給大家供大家參考。具體分析如下:

make()分配:內建函式 make(T, args) 的服務目的和 new(T) 不同。
它只產生切片,映射和程道,並返回一個初始化的(不是零)的,type T的,不是 *T 的值。

這種區分的原因是,這三種類型的資料結構必須在使用前初始化.
比如切片是一個三項的描述符,包含資料指標(數組內),長度,和容量;在這些項初始化前,切片為 nil 。

對於切片、映射和程道,make初始化內部資料結構,並準備要用的值。
記住 make() 只用於映射、切片和程道,不返回指標。要明確的得到指標用 new() 分配

複製代碼 代碼如下:
package main
import "fmt"
func main() {
 //分配片結構;* p==零
 var p *[]int = new([]int)
 *p = make([]int, 100, 100) //這樣寫有點複雜,很容易就搞亂了
 fmt.Println(p)
 //現在將V分配一個新的數組,100個整型
 //寫法一
 //var v  []int = make([]int, 100)
 //寫法二:非常常用的寫法,簡節明了
 v := make([]int, 100)
 fmt.Println(v)
}
通過make()還可以靈活地建立數組切片。如
//建立切片也使用make函數,它被分配一個零數組和指向這個數組的切片。
//建立一個初始元素個數為5的數組切片,元素初始值為0
a := make([]int, 5)  // len(a)=5
//切片有長度和容量。切片的最大長度就是它的容量。
//指定一個切片的容量,通過第三個參數。
//建立一個初始元素個數為5的數組切片,元素初始值為0,並預留10個元素的儲存空間
b := make([]int, 5, 10)    // len(b)=5, cap(b)=10
//通過重新切片,可使切片增加。
b = b[:cap(b)] // len(b)=5, cap(b)=5
b = b[1:]      // len(b)=4, cap(b)=4
//直接建立並初始化包含5個元素的數組切片
c := []int{1,2,3,4,5}

希望本文所述對大家的Go語言程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.