Golang 值,指针与引用类型

好的代码会说话,见码

package main

// beego go常用框架
// &取地址 *解引用
// 值在传递给函数或者方法的时候会被复制
// 通道、函数、方法、映射、切片是引用变量,它们持有的都是引用,也即保存指针的变量。

import (
    "fmt"
)

// 解构赋值,无需使用第三方临时变量交换
// 声明三个持有指针的变量
func swap1(x, y, p *int) {
    if *x > *y {
        *x, *y = *y, *x
    }
    *p = *x * *y
}

// 持有值变量交换
// 类似于C语言的函数声明
// 支持多值返回
func swap2(x, y int) (int, int, int) {
    if x > y {
        x, y = y, x
    }
    return x, y, x * y
}

func main() {
    // 类型推导声明赋值
    i := 0
    j := 5
    product := 0

    // 取内存地址交换
    swap1(&i, &j, &product)
    fmt.Println(i, j, product)

    a := 64
    b := 23

    // 复制值交换
    a, b, p := swap2(a, b)
    fmt.Println(a, b, p)

}

执行

go run pointer.go

结果

0 5 0
23 64 1472
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值