当前位置: 首页 > news >正文

Go语言入门(18)-指针(上)

变量会将它们的值存储在计算机的RAM里,存储位置就是该变量的内存地址。

“&”表示地址操作符,通过该字符可以获得变量的内存地址,但该操作符无法获得字符串/数值/bool值的地址。

“*”操作符与“&”的作用相反,它用来解引用,提供内存地址指向的值。下面来看一个简单的例程。

package mainimport "fmt"func main() {canada := "Canada"var home *stringfmt.Printf("home is a %T\n", home)home = &canadafmt.Println(*home)var administrator *stringBolden := "Charles F. Bolden"administrator = &Boldenfmt.Println(*administrator)major := administrator*major = "Major General CHARLES Frank Bolden Jr."fmt.Println(Bolden)//两个指针变量持有相同的内存地址,那么它们就相等,而内容不一定要完全一致。fmt.Println(administrator == major)lightfoot := "Robert M. LightFOOT Jr."administrator = &lightfootfmt.Println(administrator == major)
}

两个指针变量持有相同的内存地址,那么它们在编译器里就被认为是相等关系。指针就是用来指向的

在go语言中,可以非常方便地直接使用Println()来比较两个变量,返回值为boll类型。以上例程为例,如果两值相等,返回True,不相等返回False。

下面再来讲一下指向结构的指针。与字符串和数值不同,符合字面值地前面可以放置“&”。访问字段时,对结构体进行解引用并不是必须的。下面看一个例程

package mainimport "fmt"func main() {//与字符串和数值不一样的是,复合字面量的前面可以放置“&”type person struct {name, superpower stringage              int}timmy := &person{name: "Timothy",age:  10,}//访问字段时,对结构体进行解引用并不是必须的。//(*timmy).superpower = "flying"timmy.superpower = "flying"fmt.Printf("%+v\n", timmy)}

指向数组的指针:

和结构体一样,可以把“&”放在数组的符合字面值前,来创建指向数组的指针。

数组在执行索引or切片操作时,会自动解引用,没有必要写(*superpower)[0]这种形式。

与C语言不同,Go里面数组和指针是两种完全独立的类型。

Slice和map的复合字面值前面也可以放置“&”操作符,但Go并没有为它们提供自动解引用的功能。

http://www.dtcms.com/a/441762.html

相关文章:

  • Django ORM - 聚合查询
  • 【STM32项目开源】基于STM32的智能老人拐杖
  • YOLO入门教程(番外):卷积神经网络—汇聚层
  • 网站改版一般需要多久智慧团建学生登录入口
  • Dotnet接入AI通过Response创建一个简单控制台案例
  • 【论文笔记】2025年图像处理顶会论文
  • 用 Maven 配置 Flink 从初始化到可部署的完整实践
  • 做职业规划的网站seo学院
  • 怎么建优惠券网站太原seo排名外包
  • jmeter中java.net.ConnectException: Connection refused: connect
  • “十四五”科技冲锋:迈向科技强国的壮阔征程
  • 使用 Python 进行自然语言处理的完整初学者指南
  • 框架系统的多维赋能——论其对自然语言处理深层语义分析的影响与启示
  • HCIP 和 HCIE到底是报班还是自学好?
  • 网站建设要多少钱国外服装设计网站
  • Spring配置文件XML验证错误全面解决指南:从cvc-elt.1.a到找不到‘beans‘元素声明
  • 做美食视频网站有哪些网架公司招聘施工队伍
  • Qwen3-Coder 实战:从 0 到 1 开发商业级 API 平台,过程开源!
  • 知识点-红帽Linux入门
  • 《C++进阶之C++11》【异常】
  • 电商网站怎么推广福州短视频seo获客
  • Java 高并发多线程 “ThreadLocal” 面试清单(含超通俗生活案例与深度理解)
  • Linux网络部分—网络层
  • 30.渗透-.Kali Linux下载和安装
  • 浪浪山 iOS 奇遇记:给 APP 裹上 Liquid Glass “琉璃罩”(上集)
  • 博主自创项目:专属秘密表白源码(C语言版)(可自定义表白对象)
  • 网站建设的软硬件平台西宁做手机网站的公司
  • Traefik实现Ingress-IngressRoute-IngressRouteTCP-IngressRouteUDP及Traefik高级流量治理
  • default interface 概念及题目
  • 百度网站开发合同范本常州关键词优化如何