Golang 的零值

Golang 中定义不同类型的变量,不是通过声明就是通过 make 或 new 。 未显式初始化时,内存将被赋予一个默认的初始化,该默认值便为该类型的零值。不同的类型有不同的零值。

类型

零值

数值类型

0

布尔类型

false

字符串

“”(空字符串)

slice

nil

map

nil

指针

nil

函数

nil

接口

nil

信道

nil

示例代码:

package main

import (
        "fmt"   
)

type Student struct {
        Sno             int     		//整型(数值类型)
        Name            string  		//字符串
        Gender          bool    		//布尔类型
        Age             float32 		//浮点型(数值类型)
}

type StudentPrint interface {
        Print() 
}

func main(){ 
        stu := new(Student)
        fmt.Printf("stu=%+v\n", stu)
        
        var sliceStudent        []Student			//切片
        var mapStudent          map[int]Student		//映射
        var pStu                *Student			//指针
        fmt.Printf("slice=%v map=%v pointer=%v\n", sliceStudent, mapStudent, pStu)

        var ifVar       StudentPrint				//接口
        var funcVar     func(str *Student)			//函数
        var chVar       chan Student 				//信道
        fmt.Printf("interface=%v func=%v chan=%v\n", ifVar, funcVar, chVar)
}

运行结果:

stu=&{Sno:0 Name: Gender:false Age:0}
slice=[] map=map[] pointer=<nil>
interface=<nil> func=<nil> chan=<nil>

参考文献

[1] Go编程语言规范.零值

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魂祭心

sync.Pool实现原理

对象的创建和销毁会消耗一定的系统资源(内存,gc等),过多的创建销毁对象会带来内存不稳定与更长的gc停顿,因为go的gc不存在分代,因而更加不擅长处理这种问题。...

17110
来自专栏腾讯移动品质中心TMQ的专栏

如何写好 GO 语言单元测试

 通过基本的单元测试框架介绍(http://km.oa.com/group/viptest/articles/show/374474)和mock框架介绍(ht...

15120
来自专栏Rust语言学习交流

【Rust日报】 2019-08-07:「讨论」Rust的安全性

今天的讨论有两个主题,第一个是关于在Safe Rust中绕过借用检查的一个问题,第二个是关于Libra区块链依赖Rust单一语言而引起的安全性讨论。

10720
来自专栏公众号文章

如何使用mysql数据库【Golang 入门系列十】

之前,已经讲过一些Golang的基础的东西,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/catego...

8820
来自专栏GoLang那点事

Go中的Package和Module分析

16120
来自专栏PHP饭米粒

Swoft 2.0.5 更新,新增高效秒级定时任务、异常管理组件

Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传...

15720
来自专栏有趣的django

5.Go-封装、继承、接口、多态和断言

Go语言开发者认为:面向对象就是特定类型(结构体)有着自己的方法,利用这个方法完成面向对象编程,

9320
来自专栏FreeRonin

PassWord:一个简单的记录和管理多个账号密码的工具!

我们有时候在很多网站都有账号,而且单个网站就有不少,这时候就很容易忘记了,而且有时候密码都喜欢搞一样,这样是很不安全的,这里就分享个很简单的工具,由吾爱的cc2...

32840
来自专栏学院君的专栏

Go 语言基础入门系列教程 —— 预热篇

Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java...

10110
来自专栏学院君的专栏

Go 语言基础入门教程 —— Go 项目基本工程管理示例

在上一篇教程中,学院君带着大家搭建起了本地开发环境,并且编写了第一个 Go 程序,向世界问好。不过在实际开发过程中,直接调用编译器进行编译和链接(调用 go b...

11830

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励