文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

GO语言make和new关键字有什么区别

2023-07-06 01:34

关注

今天小编给大家分享一下GO语言make和new关键字有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. new 和 make

执行报错

执行下面的代码会引发 panic,为什么呢?

func main() {var userinfo map[string]string    userinfo["username"] = "张三"    fmt.Println(userinfo)}

2. make和new比较

new 和 make 是两个内置函数,主要用来创建并分配类型的内存。

make和new区别

func main() {a := make([]int, 1, 10) // 切片长度为 1,预留空间长度为 10a = append(a,1)fmt.Printf("%v--%T \n",a,a) // [0 0 0]--[]int 值----切片本身var b = new([]int)//b = b.append(b,2) // 返回的是内存指针,所以不能直接 append*b = append(*b, 3) // 必须通过 * 指针取值,才能进行 append 添加fmt.Printf("%v--%T",b,b) // &[]--*[]string 内存的指针---内存指针}

3. new函数

系统默认的数据类型,分配空间

// 1.new实例化intage := new(int)*age = 1// 2.new实例化切片li := new([]int)*li = append(*li, 1)// 3.实例化mapuserinfo := new(map[string]string)*userinfo = map[string]string{}(*userinfo)["username"] = "张三"fmt.Println(userinfo) // &map[username:张三]}

自定义类型使用 new 函数来分配空间

func main() {var s *Students = new(Student) //分配空间s.name ="zhangsan"fmt.Println(s) // &{zhangsan 0}}type Student struct {name stringage int}

4. make函数

package mainimport "fmt"func main() {a := make([]int,1,10) // 切片长度为 1,预留空间长度为 10b := make(map[string]string)c := make(chan int, 1)fmt.Println(a,b,c) // [0 0 0] map[] 0xc0000180e0}

当我们为slice分配内存的时候,应当尽量预估到slice可能的最大长度,通过给make传第三个参数的方式来给slice预留好内存空间,这样可以避免二次分配内存带来的开销,大大提高程序的性能。

以上就是“GO语言make和new关键字有什么区别”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯