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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:golang 变量逃逸分析
下一篇:python3.7 过滤出excel中重复数据,模糊匹配出用户名和邮箱相似数据----例子

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月27日 01时40分18秒