Go每日一题(11) 的题目如下

4713 次点击 · 14 赞 ·大约8小时之前 开始浏览   · 来源「Golang来啦」

new() 与 make() 的区别

4713 阅读
44 回复
GO_go_GO1
GO_go_GO1 · #1 · 3年之前

1:new 返回对象的指针
2:make 只能初始化 channel map slice

ironbox
ironbox · #2 · 3年之前

mark

henry1
henry1 · #3 · 3年之前

ok

neil_liu
neil_liu · #4 · 3年之前

mark

gonglf
gonglf · #5 · 3年之前

new() 与 make() 的区别

feiyang
feiyang · #6 · 3年之前

mark

brothersam
brothersam · #7 · 3年之前

make 只能针对map、slice、chanel初始化,初始化出来。这4种var完后必须make才能使用。 new 针对其他变量,例如数组。

wzbwzt
wzbwzt · #8 · 3年之前

new 也可以用在引用类型中

halo_young
halo_young · #9 · 3年之前

m

Inforleo
Inforleo · #10 · 3年之前

m

Rob1n
Rob1n · #11 · 3年之前

new和make的区别

NovaChaos
NovaChaos · #12 · 3年之前

mk

brothersam
brothersam · #13 · 3年之前

【1】 初始化对象不同,make 主要是初始化 切片、通道、map等。【2】new 初始化出来只是一个指针,不分配内存。make 直接分配内存。

hasbug
hasbug · #14 · 3年之前

mark

Zuos
Zuos · #15 · 3年之前

mark

droice
droice · #16 · 3年之前

打卡

wzbwzt
wzbwzt · #17 · 3年之前

1

mingtop
mingtop · #18 · 3年之前

new(T) 和 make(T,args) 是 Go 语言内建函数,用来分配内存,但适用的类型不同。

new(T) 会为 T 类型的新值分配已置零的内存空间,并返回地址(指针),即类型为 *T 的值。换句话说就是,返回一个指针,该指针指向新分配的、类型为 T 的零值。适用于值类型,如数组、结构体等。

make(T,args) 返回初始化之后的 T 类型的值,这个值并不是 T 类型的零值,也不是指针 *T,是经过初始化之后的 T 的引用。make() 只适用于 slice、map 和 channel。

summers
summers · #19 · 3年之前

mark

QRQRQRqrqr
QRQRQRqrqr · #20 · 3年之前

new(T) 和 make(T,args) 是 Go 语言内建函数,用来分配内存,但适用的类型不同。

new(T) 会为 T 类型的新值分配已置零的内存空间,并返回地址(指针),即类型为 *T 的值。换句话说就是,返回一个指针,该指针指向新分配的、类型为 T 的零值。适用于值类型,如数组、结构体等。

make(T,args) 返回初始化之后的 T 类型的值,这个值并不是 T 类型的零值,也不是指针 *T,是经过初始化之后的 T 的引用。make() 只适用于 slice、map 和 channel。

feiyang
feiyang · #21 · 3年之前

new() 与 make() 的区别

NovaChaos
NovaChaos · #22 · 3年之前

mk

feiyang
feiyang · #23 · 3年之前
feiyangfeiyang #21 回复

new() 与 make() 的区别

第三次打卡: new() 与 make() 的区别

ueueq
ueueq · #24 · 3年之前

new() 与 make() 的区别

hasbug
hasbug · #25 · 3年之前

mark

brothersam
brothersam · #26 · 3年之前

make 创建实例,new 只创建类型。 make 用于 切片、通道、map、还有一个什么来着忘了,其他的用new。

wzbwzt
wzbwzt · #27 · 3年之前

1

a406299736
a406299736 · #28 · 3年之前

打卡

mingtop
mingtop · #29 · 3年之前

new(T) 和 make(T,args) 是 Go 语言内建函数,用来分配内存,但适用的类型不同。

hengbo
hengbo · #30 · 3年之前

make和new都是初始化分配内存的 make用来初始化切片,chan,map的, 返回对象本身 new用来初始化string,int,数组等,返回对象的指针类型

wzbwzt
wzbwzt · #31 · 2年之前

1

beenleqi
beenleqi · #32 · 2年之前

mark

new() 与 make() 的区别

答案解析: new(T) 和 make(T,args) 是 Go 语言内建函数,用来分配内存,但适用的类型不同。 new(T) 会为 T 类型的新值分配已置零的内存空间,并返回地址(指针),即类型为 T 的值。换句话说就是,返回一个指针,该指针指向新分配的、类型为 T 的零值。适用于值类型,如数组、结构体等。 make(T,args) 返回初始化之后的 T 类型的值,这个值并不是 T 类型的零值,也不是指针 T,是经过初始化之后的 T 的引用。make() 只适用于 slice、map 和 channel。

huangyf168
huangyf168 · #33 · 2年之前

mark

BROVO
BROVO · #34 · 2年之前

mark

feiyang
feiyang · #35 · 2年之前

new() 与 make() 的区别

YuPeng
YuPeng · #36 · 2年之前

打卡

hasbug
hasbug · #37 · 2年之前

mark

YuPeng
YuPeng · #38 · 2年之前

make new

oYto
oYto · #39 · 2年之前

不对的地方请指教

  1. make 只能用来分配及初始化类型为 slice、map、chan 的数据。new 可以分配任意类型的数据。
  2. new 分配返回的是指针,即类型 *Type。make 返回的数据类型本身,即 Type。
  3. new 分配的空间被清零。make 分配空间后,会进行初始化。

https://oyto.github.io/2023/08/29/Go%E6%AF%8F%E6%97%A5%E4%B8%80%E9%A2%98/new%E5%92%8Cmake%E7%9A%84%E5%8C%BA%E5%88%AB-/

BigBigGopher
BigBigGopher · #40 · 大约1年之前

mk

zhangwei_go
zhangwei_go · #41 · 大约1年之前

1:new 返回对象的指针 2:make 只能初始化 channel map slice

BigBigGopher
BigBigGopher · #42 · 大约1年之前

mark

Qmfuser
Qmfuser · #43 · 大约1年之前

mark

hengbo
hengbo · #44 · 大约1年之前

两者都可以用来初始化, make用来slices,map,chan的初始化, new用来int,string,struct等的初始化 ,make初始化返回当前值,new初始化返回的是值的指针

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传