您现在的位置是:自如初>Go基础Go基础
25、Go 复合数据类型 - 数组之 new 函数
温新
2023-08-29 23:59:49
【Go基础】
101人已围观
简介在 GO 语言中,new 和 make 都用来分配内存。nwe 只用于内存分配,make 用于 slice、map、channel 的初始化。
hi,我是温新
在 GO 语言中,new
和 make
都用来分配内存
。nwe
只用于内存分配,make
用于 slice
、map
、channel
的初始化。
new 函数
new(类型)
函数一个内置函数,用于分配内存。下面通过案例来学习 new 函数的使用。
已存在变量
对于一个已经存在的变量,可以使用指针进行赋值。
package main
import "fmt"
func main() {
// 声明一个变量
var p int
// 把变量 p 的指针赋值给 变量 v
v := &p
// 通过指针修改值
*v = 100
fmt.Println(p, *v) // 100 100
}
声明指针变量
1)声明指针变量
package main
import "fmt"
func main() {
// 声明指针变量 p
var p *int
fmt.Println(p) // 值为 <nil>
// 对指针变量赋值
*p = 100
}
1、声明了一个指针变量 p,此时在内存中开辟出一块空间,其存储的值为 <nil>
。注意开辟了内存空间,存的值是 nil
,但是没有分配内存地址;
2、*p
通过地址赋值,此时就会报错,原因是指针变量 p,开辟了内存空间但是没有内存地址,其报错如下:
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x1 addr=0x0 pc=0xb9def1]
2)使用 new 函数分配内存地址
package main
import "fmt"
func main() {
var p *int
// 使用 new 函数变指针变量初始化内存地址
p = new(int)
*p = 100
fmt.Println(*p)
}
1、初始化一个指针变量时,它的值是 nil
,nil
无法直接赋值;
2、使用 new
函数返回一个指向新分配的类型为 int ·的指针,该指针指向的内容的值为 零,并值地址指向到指针变量 p;
很赞哦!(2)