Go并发编程实战 第二章 语法概览
第二章就是大概讲了一下Go语法的东西,标识符、操作符、类型、流程控制、函数等等。
- 任何类型都是实现了空接口
- 空标识符
—
用来接收不需要用到的变量 - 相比较别的语言,go天生支持高并发,在操作符里面也多了一个跟并发有关的,接收操作:
<-
- 类型断言:判断一个接口值得实际类型是否为某个实际类型,或者是否实现了某个接口类型。如:
v1.(I1)
v1 表示一个接口值,I1表示一个接口类型- 如果v1是一个非接口值,那么必须在做类型断言之前把它转换成接口值。因为G0中的任何类型都是空接口类型的实现类型,所以一般会这样做:
interface{}(v1).(I1)
。 - 如果类型断言的结果为否,就意味着该类型断言是失败的。失败的类型断言会引发一个运行时恐慌
panic
(或称运行时异常),解决方法是:var i1,ok = interface{}(v1).(I1)
这里声明并赋值了两个变量,其中ok是布尔类型的变量,它的值体现了类型断言的成败。如果成功,i1就会是经过类型转换后的I1类型的值,否则它将会是I1类型的零值(或称默认值)。
- 如果v1是一个非接口值,那么必须在做类型断言之前把它转换成接口值。因为G0中的任何类型都是空接口类型的实现类型,所以一般会这样做:
- Go有很多预定义类型,这里简单地把它们分为基本类型和高级类型。其中稍微注意下
byte
和rune
类型,实际就是int8
和int32
:
当然了,int的类型其实会根据cpu的架构而有所不同,这个可以查看官方资料。
- 只有基本类型及其别名类型才可以作为常量的类型。注意,G0官方的命名规范中指出常量的命名要用驼峰法。但是,书的作者认为常量的命名应该使用大小写一致的单词,且多个单词时用下划线进行分割。
(这个我觉得就看具体的公司规范吧;个人开发的话那就更无所谓了) - 数组:数组长度和类型只要有一个不一样就是不同的数组,长度一旦声明就无法改变。
[...]uint8{192,168,0,1}
方括号中的特殊标记...
表示需由G0编译器计算该值的元素数量并以此获得其长度。 - 切片:与数组不同,切片的类型字面量(如[]string)并不携带长度信息。切片的长度是可变的,且并不是类型的一部分;只要元素类型相同,两个切片的类型就是相同的。此外,一个切片类型的零值总是nil,此零值的长度和容量都为0。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言