Golang Go语言基础问题求解
Golang Go语言基础问题求解
我看代码时看到下面这段有点迷惑,随便写个 demo
type X struct{
}
请问(*X)(nil)表示什么? 我看了类型应该时 X 的指针,这个有什么用呢?
把 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语言)基础问题,以下是我的专业解答:
-
Go语言特点:
- 简洁性:语法简洁明了,减少了不必要的复杂性。
- 并发性:内置对并发编程的强力支持,通过goroutine和channel实现高效并发。
- 高效性:编译器生成的二进制文件高效,执行速度快,资源消耗低。
- 强类型系统:每个变量在编译时都有明确的类型,提高代码安全性和可靠性。
- 垃圾回收:内置垃圾回收机制,自动管理内存。
- 跨平台支持:支持跨平台编译和运行。
-
基础概念:
- 变量声明:可以使用var关键字或短变量声明(:=)来声明变量。
- 数据类型:包括整型、浮点型、布尔型、字符串等内置数据类型。
- 函数:Go语言的基本执行单元,可以接受参数并返回结果。
- 接口:定义了类型必须实现的一组方法,使代码更加灵活和可复用。
-
并发编程:
- 使用goroutine创建并发任务。
- 使用channel在goroutine之间进行通信和同步。
希望以上解答能帮助您更好地理解和掌握Go语言的基础知识。如有其他问题,欢迎继续提问。