真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言初始化結(jié)構(gòu)方法 go語言數(shù)據(jù)結(jié)構(gòu)

golang 內(nèi)置函數(shù)new 和struct 初始化的區(qū)別

obj := new(StructName) ?初始化Struct中的所有屬性都是零值,返回的是Struct指針,效果與StructName{}一致。

創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站制作、成都做網(wǎng)站項(xiàng)目的能力。經(jīng)過10余年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。

obj :=?StructName{Prop1:xx, Prop2:yy,...} ,?初始化Struct中的所有屬性,同時(shí)對指定屬性賦值,返回的是Struct值對象,作為參數(shù)傳遞時(shí),其屬性不會(huì)被修改。

obj := StructName{Prop1:xx, Prop2:yy,...} 同上,返回的是Struct值對象的指針,作為參數(shù)傳遞時(shí),其屬性可以被修改。

后面兩種使用方法更加靈活。

Go語言中new和 make的區(qū)別詳解

new 主要用于結(jié)構(gòu)體的初始化

make用于數(shù)組array,切片slice,協(xié)程chnnel的初始化

例如: users:=make([10]int);

msg:=make(chan int);

new會(huì)分配結(jié)構(gòu)空間,并初始化為清空為零,不進(jìn)一步初始化

new之后需要一個(gè)指針來指向這個(gè)結(jié)構(gòu)

make會(huì)分配結(jié)構(gòu)空間及其附屬空間,并完成其間的指針初始化

make返回這個(gè)結(jié)構(gòu)空間,不另外分配一個(gè)指針

例子new:

var p *[]int = new([]int)

p := new([]int)

以上分配了一個(gè)slice結(jié)構(gòu),但是結(jié)構(gòu)中的應(yīng)該指向底層數(shù)組的ptr指針為空,故實(shí)際不能往這個(gè)slice里面存取數(shù)據(jù)

同時(shí)分配了一個(gè)指針p,也即(在32位系統(tǒng)中)占4個(gè)字節(jié)并存放slice結(jié)構(gòu)的地址

例子make:

var v []int = make([]int, 0)

v := make([]int, 0)

以上分配了一個(gè)slice結(jié)構(gòu),且結(jié)構(gòu)中的應(yīng)該指向底層數(shù)組的ptr指針已經(jīng)指向了某個(gè)底層數(shù)組,這個(gè)底層數(shù)組應(yīng)該已經(jīng)分配了,故這個(gè)slice已經(jīng)可以使用了

注意v就是這個(gè)slice結(jié)構(gòu),而不是一個(gè)指向slice的指針

上述僅是示例,一般使用時(shí)都會(huì)明確長度和容量:v := make([]int, 10, 50)

結(jié)論:

由上可見,用new來分配slice的意義不大,因?yàn)闆]有恰當(dāng)?shù)某跏蓟?,無法直接使用

有附帶空間的結(jié)構(gòu),使用make來初始化,可以完成內(nèi)部指針初始化,其后可以立即使用

go 的選項(xiàng)模式

現(xiàn)在有個(gè)結(jié)構(gòu)體如下定義:

我們需要初始化結(jié)構(gòu)體,如果是其他語言,函數(shù)支持默認(rèn)參數(shù):

但是,go語言函數(shù)不支持默認(rèn)參數(shù),同時(shí)即使go語言支持默認(rèn)參數(shù),但是如果配置項(xiàng)過多,那么每一個(gè)配置項(xiàng)都得寫一個(gè)默認(rèn)參數(shù),也不現(xiàn)實(shí)。

那么,在go語言中,我們怎么優(yōu)雅的給其初始化呢,這時(shí),就需要利用選項(xiàng)模式了(option)。

首先,我們定義一個(gè)option函數(shù)類型:

它接收一個(gè)參數(shù): *Server 。

然后定義一個(gè) NewServer 函數(shù),它接收一個(gè) Option類型的不定參數(shù):

最后,再直接定義一系列返回 Option的函數(shù)

使用時(shí),直接:


網(wǎng)站標(biāo)題:go語言初始化結(jié)構(gòu)方法 go語言數(shù)據(jù)結(jié)構(gòu)
分享鏈接:http://weahome.cn/article/doohhos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部