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
    }
    
  • 相关阅读:
    【2014广州市选day1】JZOJ2020年9月12日提高B组T2 导弹拦截
    JZOJ2020年9月12日提高B组反思
    部署zookeeper
    13安装heapster
    11 安装traefik
    10 安装coredns
    9 安装flannel
    8 部署kube-proxy
    7 部署kubelete
    6 部署 controller-manager scheduler
  • 原文地址:https://www.cnblogs.com/haima/p/13855811.html
Copyright © 2011-2022 走看看