前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第八章 指针

第八章 指针

作者头像
宇宙之一粟
发布2020-10-26 10:16:55
2510
发布2020-10-26 10:16:55
举报
文章被收录于专栏:宇宙之_一粟

前言

本章中,我们介绍一下Go语言中的指针。 Go语言中也有指针,但是大家不要怕,Go语言的指针很简单,不会像C++指针那么复杂。

Go指针

Go没有指针运算,指针是编程语言中的对象,它的值通常指向(point to)计算机内存中另一个值的地址。

当我们定义x为int值,我们可以定义x=1。为了知道x的内存地址,我们可以使用&x,也就是定义了一个指针。 用如下代码测试一下:

代码语言:javascript
复制
package main

import "fmt"

func main() {

    var a int

    a = 10

    fmt.Println(a)  // 打印a的值
    fmt.Println(&a) // 打印a的地址
}

测试结果

代码语言:javascript
复制
10
0xc00000a0c8

我们可以看到x的值为10,其内存地址为0xc00000a0c8。内存地址可以用&取地址符来检索。

定义

我们可以用*来定义指针类型,例如 var a *int,然后使用*a = 值的方式来设定指针的值;使用x=内存地址来设置内存地址。使用如下代码测试一下:

代码语言:javascript
复制
package main

import "fmt"

func main() {

    var a int

    a = 10

    fmt.Println(a)  // 打印a的值
    fmt.Println(&a) // 打印a的地址

    // 定义指针
    var num *int
    val := new(int)

    num = new(int)
    *num = a    // 设置值

    val = &a    // 设置地址

    fmt.Println("*****指针 num*****")
    fmt.Println(*num)   // 打印指针值
    fmt.Println(num)    // 打印指针地址

    fmt.Println("*****指针 val*****")
    fmt.Println(*val)   // 打印指针值
    fmt.Println(val)    // 打印指针地址
}

测试结果

代码语言:javascript
复制
10
0xc00000a0c8
*****指针 num*****
10
0xc00000a118
*****指针 val*****
10
0xc00000a0c8

值传递?引用传递

Go语言只有值传递一种方式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Go指针
    • 测试结果
      • 定义
        • 测试结果
        • 值传递?引用传递
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档