Golang中的指针怎么用?
liuzhen007 305 2

目录

  • 前言
  • 正文
    • 什么是指针?
    • 指针怎么用?

      前言

      不止C++才有指针,Golang也有指针呦!二者有哪些区别呢?今天就来看一看。

      ​正文

      什么是指针?

      指针是用来指向任何一个变量的内存地址的类型,它所指向的变量的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节,占用字节的大小与所指向的值的大小无关。 下面我们通过一个例子来了解一下指针是如何表示地址的。 实例代码:
      package main
      

import ( "fmt" )

func main() { var a int = 1 // 一个整型变量a var b string = "abcdefg" // 一个字符串变量b fmt.Printf("%p %p", &a, &b) // 分别输出a和b的地址 }

运行结果:

> 0xc00007e020 0xc00005e1e0

值得注意的是,Golang中在声明变量时,是可以使用汉字的。比如,下面的编码形式也是可以编译通过并且正确运行的。
```go
package main

import (
    "fmt"
)

func main() {
    var 一个整型变量 int = 1
    var 一个字符串变量 string = "abcdefg"
    fmt.Printf("%p %p", &一个整型变量, &一个字符串变量)
}

运行结果:

0xc000016060 0xc000010210

指针怎么用?

指针可以用来获取变量的地址,同时也可以用来获取变量对应的值。 下面我们通过一个例子,来了解Golang中的指针是如何获取变量地址以及它的值的。 实例代码:

package main

import (
    "fmt"
)

func main() {

    // 准备一个字符串类型
    var a = "Hello, world"

    // 获取字符串的地址, ptr类型为*string
    ptr := &a

    // 打印ptr的类型
    fmt.Printf("ptr type: %T\n", ptr)

    // 打印ptr的地址
    fmt.Printf("address: %p\n", ptr)

    // 对指针进行取值
    value := *ptr

    // 打印value的类型
    fmt.Printf("value type: %T\n", value)

    // 打印value的值
    fmt.Printf("value: %s\n", value)

}

运行结果:

ptr type: *string address: 0xc000010210 value type: string value: Hello, world

通过代码的执行结果,我们可以知道ptr是一个string字符串类型的指针,它的地址是0xc000010210,它指向的值是 Hello, world。

评论区

索引目录