golang interface类型的nil

这篇具有很好参考价值的文章主要介绍了golang interface类型的nil。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

golang中interface变量,底层两个对象来存,一个是type、一个是value,只有type、value都为nil时,interface变量才是nil

package main

import (
	"fmt"
	"reflect"
)

type People interface {
	Show()
}

type Student struct{}

func (stu *Student) Show() {}

func live() People {
	var stu *Student
	return stu
}

func main() {
	i := live()
	fmt.Println(reflect.TypeOf(i))
	fmt.Println(i)

	if i == nil {
		fmt.Println("我是为空")
	} else {
		fmt.Println("我不为空")
	}
}

输出结果为:
golang interface类型的nil,笔记,golang,开发语言,后端

可以看到interface 变量i,虽然值为nil,但类型是Student

如果想判断变量value是否为空,可以指定type文章来源地址https://www.toymoban.com/news/detail-621260.html

func main() {
	i := live()
	fmt.Println(reflect.TypeOf(i))
	fmt.Println(i)

	if i == (*Student)(nil) {
		fmt.Println("我是为空")
	} else {
		fmt.Println("我不为空")
	}
}

到了这里,关于golang interface类型的nil的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【后端学习笔记·Golang】邮箱邮件验证

    流程: 接收用户请求后生成随机验证码,并将验证码存入Redis中,并设置TTL 通过gomail发送验证码给用户邮箱 接收用户输入的验证码,与Redis中存放的验证码进行比对 ​ 随机种子通过 time.Now().UnixNano() 进行设置,以确保对于同一个用户每次请求都使用不同的种子。然后,定义

    2024年04月26日
    浏览(50)
  • golang实现webgis后端开发

    目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 (5)数据返回  2.前端传入的geojson储存到数据库 3、其他功能实现 总结         停更了接近一个月都在研究一门新语言gola

    2024年02月08日
    浏览(50)
  • 编程笔记 Golang基础 016 数据类型:数字类型

    在Go语言中,数字类型是其丰富数据类型的一部分,主要用于表示数值。 以下是Go语言中主要的数字类型详解: 1. 整数类型(Integer Types) a) 固定长度整数: 有符号整数 : int8 :8位带符号整数,范围从-128到127。 int16 :16位带符号整数,范围从-32,768到32,767。 int32 :32位带符号

    2024年02月22日
    浏览(47)
  • 【Golang map并发报错】panic: assignment to entry in nil map

    go并发写 map[string]interface{} 数据的时候,报错: panic: assignment to entry in nil map 多个key同时操作一个map时,如: test[key1] = 1 test[key2] = \\\"a\\\" test[key3] = true 就会遇到并发nil值报错,什么test[key-xxx] = make()根本不行。 用异步sync.Map解决: Lock锁那个比较麻烦,不建议使用。推荐使用sync

    2024年01月19日
    浏览(33)
  • go数据类型-空结构体、空接口、nil

    有经验的开发人员都知道,所有的空结构体是指向一个 zerobase的地址,而且大小为0 一般用来作结合map作为set 或者 在channel中 传递信号。 能看到当一个空结构体中,包含了其他类型的变量,就不指向 zerobase。 go中的接口都是隐式的,增加的封装的灵活性,也为阅读源码增加了

    2024年02月05日
    浏览(59)
  • 【Golang】认识Go语言中基本的数据类型

    目录 整形 基本整型  特殊整型 浮点型 布尔型 字符型 字符串转义符  多行字符串 字符串的常用操作 复数 我们不论在学习什么语言中,我们都要去认识一下这个语言中的数据类型,当然学习Go也不例外,我们也要去认识一下其相关的数据类型,当然这些数据类型基本上是大

    2023年04月08日
    浏览(46)
  • Golang 接口(interface)

    原创比较累,希望大家能点点赞,对我的支持。你们的支持,就是我的动力。 1. 接口实现 在 Go 中,接口是一种抽象类型,它定义了一组方法签名,但没有实现。接口用于描述对象应该具有的方法集合,而不是具体的实现方式。 接口的定义使用 `type` 和 `interface` 。例如

    2024年02月05日
    浏览(38)
  • Go 语言 nil 空值

    在 Go 语言中, nil 是一个预定义的标识符,用于表示某些类型的零值或空值。 nil 在 Go 语言中可以表示以下几种类型的零值或空值: 指针类型:表示一个指向空地址的指针,即指针不指向任何有效的内存地址。 接口类型:表示一个空接口,即接口没有关联任何值。 函数类型

    2024年02月11日
    浏览(37)
  • Go语言中的空和nil

    Go语言中的空和nil 在 Go 语言中,\\\"空\\\"和\\\"nil\\\"是两个不同的概念,分别适用于不同的数据类型和用途。 在 Go 中,每种数据类型都有一个默认的零值,也被称为\\\"空\\\"值。这是在创建变量但未显式初始化时自动分配给变量的值。空值对于不同类型的变量来说是不同的,例如: 数值类

    2024年02月13日
    浏览(92)
  • 【Golang】Golang进阶系列教程--为什么 Go 不支持 []T 转换为 []interface

    在 Go 中,如果 interface{} 作为函数参数的话,是可以传任意参数的,然后通过类型断言来转换。 举个例子: 不管是传 int 还是 string,最终都能输出正确结果。 那么,既然是这样的话,我就有一个疑问了,拿出我举一反三的能力。是否可以将 []T 转换为 []interface 呢? 比如下面

    2024年02月15日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包