Golang Go语言基础问题求解

发布于 1周前 作者 yibo5220 来自 Go语言

Golang Go语言基础问题求解
我看代码时看到下面这段有点迷惑,随便写个 demo
type X struct{
}

请问(*X)(nil)表示什么? 我看了类型应该时 X 的指针,这个有什么用呢?

9 回复

把 nil 转为 X 指针,和普通的 nil 有些区别
a := (*X)(nil)
reflect.TypeOf(nil)
reflect.TypeOf(a)

更多关于Golang Go语言基础问题求解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我想是一个空的指向 X 的指针,具体作用还要结合代码,我好像没有这样用过

跟 var a *X 没区别吧?指针声明了默认是 nil

表示没这样用过, 下文是接着干啥用?

嗯,是这样的,我看后半天才理解。我是在函数传参数时看到的

Your test3 := (*Struct)(nil) is just a obfuscated variant of the idiomatic var test3 *Struct.

from https://stackoverflow.com/questions/27827871/what-the-difference-between-tnil-and-t-newt-golang

嗯,谢谢,看后都明白了

这种方式写 C 的和 C++的用的多

针对您提出的Golang(Go语言)基础问题,以下是我的专业解答:

  1. Go语言特点

    • 简洁性:语法简洁明了,减少了不必要的复杂性。
    • 并发性:内置对并发编程的强力支持,通过goroutine和channel实现高效并发。
    • 高效性:编译器生成的二进制文件高效,执行速度快,资源消耗低。
    • 强类型系统:每个变量在编译时都有明确的类型,提高代码安全性和可靠性。
    • 垃圾回收:内置垃圾回收机制,自动管理内存。
    • 跨平台支持:支持跨平台编译和运行。
  2. 基础概念

    • 变量声明:可以使用var关键字或短变量声明(:=)来声明变量。
    • 数据类型:包括整型、浮点型、布尔型、字符串等内置数据类型。
    • 函数:Go语言的基本执行单元,可以接受参数并返回结果。
    • 接口:定义了类型必须实现的一组方法,使代码更加灵活和可复用。
  3. 并发编程

    • 使用goroutine创建并发任务。
    • 使用channel在goroutine之间进行通信和同步。

希望以上解答能帮助您更好地理解和掌握Go语言的基础知识。如有其他问题,欢迎继续提问。

回到顶部