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

一、值类型

  1. 定义

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

  2. 应用

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

二、引用类型

1. 定义

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

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

2. 应用

  指针、slice、mapchan、接口、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\n", one) //one:200
	fmt.Printf("two:%d\n", two) //two:100
}
posted @   HaimaBlog  阅读(210)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2018-10-22 第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)
点击右上角即可分享
微信分享提示