• 指针


    指针

    1. 概念

      存储另一个变量的内存地址的变量

    2. 获取变量地址

      Go语言的取地址符是&,放到一个变量前使用返回相应的变量的内存地址

    3. 声明指针

      *T是指针变量的类型,它指向T类型的值

      var var_name *var_type
      
    4. 获取指针的值

      获取一个指针意味着访问可访问指针指向的变量的值。

      语法为:
      *pointer
      
    5. 操作变量

      操作变量,更改数值,并不会更改变量的地址

    6. 通过指针操作变量

      通过指针修改数值,也不会更改变量的地址

    7. 指针的指针

      存放另一个指针变量地址的变量

      var a **p
      b := 10
      c := &b
      a = &c
      
    8. 数组指针

      首先是一个指针,存储了一个数组的地址

      *[4]Type

      s := [4]int{1,2,3,4}
      sp := &s
      fmt.Println(sp) //&[1 2 3 4] 打印出指针sp的字符表示形式
      fmt.Printf("%p
      ",sp) //打印数组s的地址
      fmt.Printf("%p
      ",&sp) //打印指针sp的地址
      
      //通过指针操作数组
      (*sp)[0]=100
      fmt.Println(s[0]) //100
      sp[0]=200 //简化写法
      fmt.Println(s[0]) //200
      
    9. 指针数组

      首先是一个数组,存储的数据类型是指针

      [4]*Type

      a := 1
      b := 2
      c := 3
      d := 4
      arr2 := [4]int{a,b,c,d} //数组arr2中存放的是变量a,b,c,d的副本,说明是通过值传递方式创建的数组
      arr3 := [4]*int{&a,&b,&c,&d} 
      
    10. 函数指针

      1. 首先是一个指针,指向了一个函数的指针

        因为go语言中,function,默认看作一个指针,没有*

        func f(){}
        //函数名f本身就是个函数指针,存储了函数体的地址
        
      2. 默认引用类型的类型

        slice,map,function

    11. 指针函数

      首先是一个函数,该函数的返回值是一个指针

      func fun2() *[4]int{
      	arr := [4]int{1,2,3,4}
      	return &arr
      }
      
    12. 指针作为参数

      指针因为是引用类型,所以作为参数传递参数地址,通过指针能直接修改源数据。

    13. 注意

      指针只是针对非引用类型使用,如slice等引用类型没必要使用指针

  • 相关阅读:
    服务器出现大量的127.0.0.1:3306 TIME_WAIT连接 解决方法 [转载]
    phpize安装php扩展CURL
    linux位数查看
    Linux下Sublime Text 3的安装
    ECstore后台报表显示空白问题解决办法
    centos 上安装phpstorm
    Nginx禁止目录执行php文件权限
    vue 动画
    vue的路由
    组件的传值 组件之间的通讯
  • 原文地址:https://www.cnblogs.com/henryno12/p/12688005.html
Copyright © 2020-2023  润新知