GO语言复合类型01---指针
时间:2019-11-06
本文章向大家介绍GO语言复合类型01---指针,主要包括GO语言复合类型01---指针使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针的指针 作用:函数传参时,传递指针叫引用传递,值传递是拷贝式的,对被传参数的修改是不会改变本体的,想要改变本体只能是引用传递 */ import "fmt" //指针就是地址 //&value 对值取地址 //*ptr 对地址取值 func main021() { //声明变量a时,系统开辟了一块内存【地址】,里面存的【值】是123 var a int = 123 fmt.Printf("a的类型是%T\n", a)//int fmt.Printf("a的值是%v\n", a)//123 fmt.Printf("a的地址是%p\n", &a)//0x... //&a取变量a的地址 aPointer := &a fmt.Printf("aPointer的类型是%T\n",aPointer)//*int //将aPointer指向的地址中的值修改为456 *aPointer = 456 fmt.Println("*aPointer=",*aPointer)//456 //a的值就变成了456 fmt.Println("a=",a) } //先定义原始变量,修改其指针中的值,会直接改变原变量 //指针如果没有重新赋值,永远指向同一块地址 func main022() { //系统给x分配了内存 var x = 456 fmt.Println(x)//456 //定义整型指针(存储整型数据的地址) //默认赋值为空<nil> var xPtr *int fmt.Println("xPtr=", xPtr)//nil //aPtr指向x的地址 xPtr = &x //将xPtr指向的地址中的值修改为789 *xPtr = 789 fmt.Println(x) //789 fmt.Println(xPtr) //0xc042052080 fmt.Println(&x) //0xc042052080 fmt.Println(*xPtr) //789 fmt.Println(*xPtr == x) //true fmt.Println(xPtr == &x) //true var y = 456 *xPtr = y fmt.Println(x) //456 fmt.Println(xPtr) //没有变 fmt.Println(&x) //没有变 fmt.Println(*xPtr) //456 fmt.Println(*xPtr == y) //true fmt.Println(x == y) //true fmt.Println(&x == &y) //false fmt.Println(xPtr == &y) //false fmt.Printf("y的地址是%p\n",&y) fmt.Println("----------") //xPtr指向y的地址 xPtr = &y y = 789 fmt.Println(x) //456 fmt.Println(y) //789 fmt.Println(*xPtr) //789 fmt.Println(&x == xPtr) //false } //指针是严格检测数据类型的 func main023() { var x = 123 var intPtr *int intPtr = &x fmt.Println(intPtr, *intPtr) //0x...,123 //var y = "你妹" //intPtr = &y//编译错误,【整型指针】无法赋值为【字符串的地址】 } //指针的指针 func main024() { var x = 123 var mPtr *int = &x //var mmp **int mmPtr := &mPtr fmt.Println(mmPtr)//0xc042072018 fmt.Printf("mmPtr的类型是%T\n",mmPtr)//mmPtr的类型是**int //打印x的值 fmt.Println(*mPtr)//123 fmt.Println(*(*mmPtr))//123 fmt.Println(**mmPtr)//123 } func main() { //main021() //main022() //main023() main024() }
原文地址:https://www.cnblogs.com/yunweiqiang/p/11809002.html
- 一个 tflearn 情感分析小例子
- 前端js,后台python实现RSA非对称加密
- 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
- ODL应用开发之MD-SAL中级教程
- Sql参数是一个list的最佳实践
- MyBatis 配置输出日志,不输出SQL问题解决
- lombok让你提高代码整洁度的神器附教程及原理分析
- mvn编译的时候一个破错误,google只有3个结果maven : Failed to install metadata project Could not parse metadata maven-
- 读书|《Mastering Machine Learning with Python in Six Steps》
- 几种简单的文本数据预处理方法
- Fiddler中显示IP方法
- readlink: command not found 解决方案
- Java 并发编程系列: CountDownLatch (上厕所的案例)
- 详解ANGULAR2组件中的变化检测机制(对比ANGULAR1的脏检测)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- poiAndEasyExcel学习(二)
- poiAndEasyExcel学习(三)
- poiAndEasyExcel学习(四)
- 使用OpenCV为视频中美女加上眼线
- 论文精读|5th|YOLO v3的新特性|目标检测|附下载
- 算法集锦(9)|自动驾驶|道路图像增强算法
- 基于OpenCV实现海岸线变化检测
- 爬取bilibili再也不用头疼了,bilibili-api一步到位!
- 「React」很多人在滥用 state
- == 与equals和hashCode与equals
- 算法集锦(10)| 自动驾驶、机器人 | 物品图像动态检测算法实现
- Hystrix仪表盘
- Centos7 Nginx的SSL证书安装
- 算法集锦(11)| 自动驾驶 | 基于HOG和SVM的车辆识别算法
- 剑指offer(一):找出数组中重复的数字