9、Go基础数据类型详解

Go基础数据类型详解

1. 指针

Go语言支持指针,但不支持指针运算,而指针运算在像C这样的编程语言中常常是许多错误和漏洞的根源。指针本质上是变量的内存地址。若要获取指针所指向的值,需要对指针进行解引用操作,这通过在指针变量前加 * 字符来实现。同时,在普通变量前加 & 就能获取其内存地址。

下面通过一个图展示 int 变量和指向 int 的指针的区别:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(int变量):::process -->|内存地址| B(指向int的指针):::process

若指针变量指向一个已存在的普通变量,那么通过该指针变量对存储值所做的任何更改都会影响到这个普通变量。

使用指针的好处主要有:
- 简化代码:将变量作为指针传递给函数(按引用传递)时,函数返回后对该变量值所做的更改不会丢失。
- 数据共享与操作:允许在函数间共享和操作数据,而无需显式地将值返回给调用者。但在函数和 goroutine 间共享数据时,要特别注意竞态条件问题。
- 区分零值和未设置值:能轻松区分变量的零值和未设置的值( nil ),这在处理结构体时尤为有用。
- 支持复杂数据结构:使Go能支持如链表和二叉树等计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值