4. Go语言—值类型和引用类型

一、值类型

1. 定义

​ 变量直接存储的值,内存通常在栈中分配; var i = 5 -> i-->5

2. 应用

int、float、bool、string、数组、struct

二、引用类型

1. 定义

​ 变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,通过GC回收。

ref r--->地址--->值

2. 应用

指针、slice、map、chan、接口

三、实例

package main

import "fmt"

func swap(a *int, b *int) {
    // 获取指针地址指向的值
        tmp := *a
        *a = *b
        *b = tmp
        return
}

func main() {
        one := 100
        two := 200
    // 获取指针地址
        swap(&one, &two)
        fmt.Println("one:%d", one)
        fmt.Println("two:%d", two)
}