最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go中make用法及常見的一些坑

 更新時間:2022年12月26日 10:15:32   作者:little?Chen1  
golang分配內(nèi)存主要有內(nèi)置函數(shù)new和make,下面這篇文章主要給大家介紹了關(guān)于go中make用法及常見的一些坑,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

make用法和參數(shù)用法

golang分配內(nèi)存有一個make函數(shù),該函數(shù)第一個數(shù)類型,第二個參數(shù)的分配的空間,第三個

參數(shù)時預(yù)留分配空間,前兩個參數(shù)很好理解,但對第三個參數(shù)不是很理解,

例如a:=make([]int,5,10),len(a)輸出結(jié)果為5,cap(a) 輸出結(jié)果為10 ,對a[4]可以正常賦值,但是對a[5]進(jìn)行賦值就會發(fā)現(xiàn)報錯

package main
 
import "fmt"
 
func main(){
	a := make([]int, 5, 10)
	fmt.Println("len(a):", len(a))
	fmt.Println("cap(a):", cap(a))
	fmt.Println(a)
	b := a[:cap(a)]
	fmt.Println(b)
}

使用make常見的一些坑

1:slice使用make

slice在make了之后,設(shè)置了slice的大小之后。實(shí)際上是在slice里面添加了len個數(shù)據(jù),

如果在使用append來操作的話,相當(dāng)于在slice后面添加新的元素,

arr := make([]int, 10)
	fmt.Println("len=", len(arr), "cap=", cap(arr), "arr", arr)
 
	arr = append(arr, 1)
	fmt.Println("len=", len(arr), "cap=", cap(arr), "arr", arr)
 
	arr = make([]int, 10, 20)
	fmt.Println("len=", len(arr), "cap=", cap(arr), "arr", arr)

輸出結(jié)果

2:map使用map:

注意:map在使用make的時候,就算指定了len,也是不起作用的,這個len起不到限制的作用。如:

temp := make(map[string]int)
	fmt.Println("len(temp):", len(temp), "temp:", temp)
 
	temp1 := make(map[string]int, 3)
	fmt.Println("len(temp1):", len(temp1), "temp1", temp1)

輸出結(jié)果

下面的例子闡述了new和make的區(qū)別

var p *[]int = new([]int) ? ? ? // 分配切片數(shù)據(jù)結(jié)構(gòu); *p == nil; 幾乎沒有作用
var v ?[]int = make([]int, 100) // 切片v引用一個[100]int的數(shù)組

// 沒有必要:
var p *[]int = new([]int)
*p = make([]int, 100, 100)

// 慣用做法:
v := make([]int, 100)

記住,make只應(yīng)用于映射、切片和信道,并且不會返回指針。如果想獲得一個顯式的指針,使用new分配空間或者直接獲取變量的地址。

總結(jié)

到此這篇關(guān)于go中make用法及常見的一些坑的文章就介紹到這了,更多相關(guān)go的make用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

东台市| 华池县| 五大连池市| 临澧县| 昭觉县| 扬中市| 海盐县| 尼木县| 东源县| 荣成市| 四川省| 晴隆县| 锡林郭勒盟| 林州市| 息烽县| 古蔺县| 银川市| 博野县| 张家口市| 龙州县| 万山特区| 兰坪| 景宁| 铁岭县| 武陟县| 龙海市| 稻城县| 绵阳市| 吉林市| 黄大仙区| 武威市| 株洲市| 明光市| 高雄市| 普定县| 建湖县| 恩施市| 兴城市| 红原县| 太白县| 赣榆县|