当前位置:网站首页>【愚公系列】2022年7月 Go教学课程 013-常量、指针
【愚公系列】2022年7月 Go教学课程 013-常量、指针
2022-07-20 16:18:00 【愚公搬代码】
一、常量
1.常量的定义
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
常量的定义格式:
const identifier [type] = value
你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
定义一个 Go 语言常量非常简单,它和变量的声明方式类似,将 var 关键字替换成 const 即可,代码如下:
const pi = 3.141592
const name = "愚公搬代码"
2.常量的使用
package main
import (
"fmt"
)
const (
pi = 3.141592
name = "愚公搬代码"
)
func main() {
fmt.Println(pi, name)
}
二、指针
1.指针的定义
在计算机中,所有的数据都是存放在存储器中的,不同的数据类型占有的内存空间的大小各不相同。内存是以字节为单位的连续编址空间,每一个字节单元对应着一个独一的编号,这个编号被称为内存单元的地址。比如:int 类型占 4 个字节,char 类型占 1 个字节等。系统在内存中,为变量分配存储空间的首个字节单元的地址,称之为该变量的地址。地址用来标识每一个存储单元,方便用户对存储单元中的数据进行正确的访问。在高级语言中地址形象地称为指针。
2.指针的使用
每个变量在程序运行时都有一个地址,这个地址代表变量在内存中的位置。
Go 语言中,通过 & 操作符对变量进行 “取地址” 操作,格式如下:
p := &v // v 的类型为 T
上面代码中,v 表示被取地址的变量,取到的地址用变量 p 进行接收, p 的类型为 “*T”, 称为 T 的指针类型。*代表指针。
案例如下:
package main
import "fmt"
func main() {
var name string = "愚公搬代码"
// 获取字符串的指针, p 类型为*string
p := &name
// 打印变量 p 的类型
fmt.Printf("p type: %T\n", p)
// 打印变量 p 的指针地址
fmt.Printf("address: %p\n", p)
// 通过 * 对指针进行取值操作
value := *p
// 取值后的类型
fmt.Printf("value type: %T\n", value)
// 指针取值后指向变量的值
fmt.Printf("value type: %s\n", value)
}
- &, 取地址操作符,功能是取出变量在内存中的地址;
- *,取值操作符,功能是取出地址指向的实际值。
边栏推荐
- redis集群搭建及配置优化详解
- 李宏毅老师2020年深度学习系列讲座笔记2
- pycharm配置
- Qualcomm sends three processors in a row: Xiaolong 730g is expected to become the first choice for its second flagship!
- Sigmoid of the action of excitation function
- Image and Pattern Classification with Scattering
- Zhang Xiaoquan, are you wronged?
- 【2022华为开发者大赛系列直播】华为开发者大赛—乾坤云服务赛事解读
- kakfa常用命令
- wmware启用虚拟化功能报错
猜你喜欢
随机推荐
VC 都歇了?上半年高瓴创投出手近 80 次,六成 A 轮前
SMS verification
"Hisense's B-side" technology exhibition opens! Hisense B2B represents the first collective appearance of products!
网络安全学习(八)域
激励函数的作用之sigmoid
Separable Convolution可分离卷积
opencv图像数据增强
IBM MQ运维使用手册
[Extension announcement] 2022 International Conference on touch and virtual reality (ichvr 2022)
vc 每次按F5运行都提示重新编译
Image and Pattern Classification with Scattering
Network Security Learning (x) simple test process of penetration
张小泉,冤吗?
influxdb查询时间戳问题
Self study notes on Bayesian probability and Bayesian networks and Bayesian causal networks
yolov5
wpf 打开外部程序并在需要时激活
bug汇总
Pycharm configuration
网络安全学习(九)综合实验&PKI