golang学习笔记(七)

        go语言中的指针跟C/C++没有什么区别,存放变量的内存地址。go指针的的空指针是nil,定义一个指针变量,它的默认值是 nil。

        指针声明:

     

   var var_name *var_type

        例:

      

  var Val1 *int

        跟C/C++用法一样,通过操作符 "&" 取变量地址, "*" 通过指针访问目标对象。

package main

import (
	"fmt"
)

func main() {
	var val1 int = 101
	var ptr *int = &val1

	fmt.Println("变量地址:", &val1, ptr, *ptr)

	var p *int
	fmt.Println(p)
}

        在C++中提到指针一般都会想到new/delete。

        go也有new关键字,new(T) 创建一个T类型的匿名变量,所做的是为T类型的新值分配并清零一块内存空间,然后将这块内存空间的地址作为结果返回,而这个结果就是指向这个新的T类型值的指针值,返回的指针类型为*T。

        new创建的内存空间位于heap上,空间的默认值为数据类型默认值。如:new(int) 则 *p为0,new(bool) 则 *p为false。

        我们只需使用new()函数,无需担心其内存的生命周期或怎样将其删除,因为Go语言的内存管理系统会帮我们打理一切,这个解决了C/C++程序员的一个痛点,易发的内存泄漏。

package main

import (
	"fmt"
)

func main() {
	var p *int
	fmt.Println(p)
	
	p = new(int)
	fmt.Println(*p) //0

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值