永发信息网

golang函数返回slice和返回 slice的指针有什么区别

答案:1  悬赏:50  手机版
解决时间 2021-02-11 06:52
golang函数返回slice和返回 slice的指针有什么区别
最佳答案
按照你的定义,slice是切片,而p是指针。切片是一个结构体头部+数组区域,其头部结构定义如下:struct Slice{ // must not move anythingbyte* array; // actual datauintgo len; // number of elementsuintgo cap; // allocated number of elements};因此,slice的返回其实是头部值返回,函数内外的地址是不同的,这也导致主程序中,ss与pp不同。因为ss是新分配的,pp则是与子程序testInterface中的slice相同。简单修改你的代码,通过输出对比,会非常清晰:package mainimport ("fmt")func testInterface() (slice interface{}, p interface{}) {slice = make([]int, 10)p = slicefmt.Println("debug:testInterface")fmt.Println(slice)//两个地址应该相同fmt.Println(p) //两个地址应该相同return slice, p}func main() {fmt.Println("debug:main")ss, pp := testInterface()fmt.Println(ss)fmt.Println(pp) //应该与子程序的输出一致}另外,第一个问题就不用多解释,依然是值和指针不同了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
恩施市三岔中学地址好找么,我有些事要过去
票据的汇兑作用存在的理由
一个长整型变量在内存中占据()字节的空间。
请问由刘德华或者陈小春主演的电影有哪些?
海尔40_777洗衣机进水阀短路保护.换了进水阀
恩施市屯堡桥头中学地址在什么地方,想过去办
买的手机,只能走顺丰陆运。昨天凌晨12点从上
我叫王原林怎样向别人介绍自己比较有创意,求
建始县高坪镇石垭子中学地址在什么地方,想过
谁知道纸的来源和为什么要节约用纸?
如图所示,若△ABC、△ADE都是正三角形,请试
建始县三里乡坝中学怎么去啊,我要去那办事
位置度公差属()。
建始县苗坪建阳中学地址好找么,我有些事要过
国贸名品港北门这个地址在什么地方,我要处理
推荐资讯
[foou]这个英文是什么意思?
一个可爱的人400字
上数学课。用英语怎么说
涵洁干洗店地址在哪,我要去那里办事
梅特莱斯汽车服务会所地址在什么地方,我要处
爱的教育中的人物做了那些好事
格莱美Ktv地址好找么,我有些事要过去
白菜炖豆腐粉条放不放八角啊?
四川省烟草公司广元市公司旺苍烟草营销部在哪
克丽缇娜(东原D7店)地址在什么地方,想过去办
L3什么材质
乌兰察布市察右前旗黄冈学校教学质量好吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?