GOlang 指针
发布日期:2021-06-30 15:37:02
浏览次数:3
分类:技术文章
本文共 1377 字,大约阅读时间需要 4 分钟。
package mainimport ( "flag" "fmt")func main() { //指针 var cat int = 1 var str string = "ba" fmt.Printf("%p %p\n", &cat, &str) // 变量 指针和地址三者关系 每个变量都拥有地址 指针的值就算地址 //当使用 &操作符对普通变量进行取地址操作并得到变量的指针后可以对指针使用 *操作符也就是指针取值 // 准备一个字符串 var house = "my name is 111" //对字符串进行取地址 ptr := &house //打印出 ptr类型 fmt.Printf("type %T\n", ptr) //打印出 ptr指针地址 fmt.Printf("addr %p\n", ptr) //对指针进行取值操作 value := *ptr // 取值后的类型 fmt.Printf("value type: %T\n", value) // 指针取值后就是指向变量的值 fmt.Printf("value: %s\n", value) //取地址操作符&和取值操作符*是一对互补操作符,&取出地址,*根据地址取出地址指向的值。 //使用指针修改值 x, y := 1, 2 swap(&x, &y) //输出 fmt.Println(x, y) //定义命令行参数 var mode = flag.String("mode", "", "process mode") //解析命令参数 flag.Parse() // 输出命令行参数 fmt.Println(*mode) //创建指针的另一种方法——new() 函数 str_1 := new(string) *str_1 = "Go语言教程" fmt.Println(*str_1)}//交换函数func swap(a, b *int) { // 取a指针的值, 赋给临时变量t t := *a // 取b指针的值, 赋给a指针指向的变量 *a = *b // 将a指针的值赋给b指针指向的变量 *b = t}/*第 6 行,定义一个交换函数,参数为 a、b,类型都为 *int 指针类型。第 9 行,取指针 a 的值,并把值赋给变量 t,t 此时是 int 类型。第 12 行,取 b 的指针值,赋给指针 a 指向的变量。注意,此时*a的意思不是取 a 指针的值,而是“a 指向的变量”。第 15 行,将 t 的值赋给指针 b 指向的变量。第 21 行,准备 x、y 两个变量,分别赋值为 1 和 2,类型为 int。第 24 行,取出 x 和 y 的地址作为参数传给 swap() 函数进行调用。第 27 行,交换完毕时,输出 x 和 y 的值。*操作符作为右值时,意义是取指针的值,作为左值时,也就是放在赋值操作符的左边时,表示 a 指针指向的变量。其实归纳起来,*操作符的根本意义就是操作指针指向的变量。当操作在右值时,就是取指向变量的值,当操作在左值时,就是将值设置给指向的变量*/
转载地址:https://jsonll.blog.csdn.net/article/details/103389564 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月27日 01时40分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
命名难,难于上青天
2019-05-01
史上最烂项目:苦撑12年,600多万行代码...
2021-07-04
没钱没公司,怎么做一款付费产品
2021-07-04
查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?
2021-07-04
FastAPI 构建 API 服务,究竟有多快?
2021-07-04
为什么Quora选择用Python语言?
2021-07-04
一劳永逸学编程的方法
2021-07-04
代码整洁之道-编写 Pythonic 代码
2019-05-01
树莓派程序开机自启动
2019-05-01
连锁门店无线通信方案
2019-05-01
配置Lotus Domino集群视频详解
2019-05-01
Linux软件万花筒
2019-05-01
全球开源软件发展趋势分析
2019-05-01
Linux系统安全加固(一)
2019-05-01
Linux常用的安全工具
2019-05-01
python 多进程之进程池的操作
2019-05-01
flask整理之 flask程序中的debug模式
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01
为什么要反对比特币,这不代表是空气币
2019-05-01