• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

3.7Go指针

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。

Go 语言中使用&作符放在变量前面对变量进行“取地址”操作。

1.指针默认值nil
2.通过&(取地值符)取变量地址
3.通过*(取值符)透过指针访问目标值

格式:

age := 18
ptr:=&age  //age是变量名,&age是取age的内存地址,地址交给ptr变量接收,ptr类型是*int

首先基本数据类型中,如name="yugo" ,变量name存的值是yugo

1)基本数据类型,变量存的是,称为类型

2)通过&符号获取变量地址,例如&name

3)指针类型的变量,存的是另一个变量的内存地址,这个地址指向的空间存的是

4)获取指针类型指向的,使用*,例如*ptr,使用*ptr获取ptr指向的值

package main

import (
    "fmt"
)

func main() {
    var name string = "yugo"
    //查看name变量的内存地址,通过&name取地址
    fmt.Printf("name的内存地址:%v\n", &name)

    //指针变量,存的是内存地址
    //ptr指针变量指向变量name的内存地址
    var ptr *string = &name
    fmt.Printf("指针变量ptr的内存地址:%v\n", ptr)

    //获取指针变量的值,用*ptr
    //*ptr表示读取指针指向变量的值
    fmt.Printf("指针变量ptr指向的值是:%v\n", *ptr)
}

5)值类型(int、float、bool、string、array、struct)都有对应指针类型

比如*int*string等等

6)使用指针类型交换变量的值

//想要交换ab的值
func exchange(a, b *int) {
    *a, *b = *b, *a
}

func main() {
    a, b := 3, 4
    exchange(&a, &b)
    fmt.Println(a, b)
}

7)使用new()函数创建指针

func main() {
    s1 := new(string)                                  //new函数返回指针类型*string,用s1指针变量存储
    fmt.Printf("s1类型:%T  s1指针变量存储的内存地址是:%v\n", s1, s1) //s1类型*string,值是空字符串的内存地址
    //s1="哈哈" 错误写法,s1存储的内存地址
    *s1 = "马云说我不爱钱" //*s1取内存地址指向的值
    fmt.Println(*s1)
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go内存逃逸分析发布时间:2022-07-10
下一篇:
如何做Go的性能优化?(转)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap