• Go语言—值类型和引用类型


    一、值类型

    1. 定义

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

    2. 应用

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

    二、引用类型

    1. 定义

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

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

    2. 应用

      指针、slice、map、chan、接口、func
    

    3.nil的定义:

      // nil is a predeclared identifier representing the zero value for a 
      // pointer, channel, func, interface, map, or slice type.
    
      var nil Type // Type must be a pointer, channel, func, interface, map, or slice type
    
      只有 slice、map、channel、interface、pointer、func 这些类型的值才可以是 nil
    

    4.如何判定interface里面的动态值是否为空

      对于一个接口的零值就是它的类型和值的部分都是nil。
    

    三、实例

    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.Printf("one:%d
    ", one) //one:200
    	fmt.Printf("two:%d
    ", two) //two:100
    }
    
  • 相关阅读:
    内核驱动系列中断和定时器
    apue2 阅读笔记第四章
    apue2 阅读笔记 第五章
    apue2阅读笔记 第6.7章
    再试试windows7版得writer
    内核驱动系列内核调试方法
    apue2 阅读笔记第三章
    杂谈关于代码库
    know everything about something
    React的父子传值(父传子)
  • 原文地址:https://www.cnblogs.com/haima/p/13855811.html
Copyright © 2020-2023  润新知