zoukankan      html  css  js  c++  java
  • 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
    }
    
  • 相关阅读:
    c ++ auto 的使用
    poj 3169 Layout
    1076 Forwards on Weibo (30)(30 分)
    Zookeeper注册节点的掉线自动重新注册及测试方法
    ZooKeeper(3.4.5) 使用Curator监听事件
    Nginx 引入线程池,提升 9 倍性能
    面试总结 地址
    struts2原理
    struts2拦截器与过滤器
    java网络编程serversocket
  • 原文地址:https://www.cnblogs.com/haima/p/13855811.html
Copyright © 2011-2022 走看看