Go语言变量类型相关
三种声明方式
在Go语言中有下面这三种声明方式
var a int = 3; var b = 3; c := 3;
注意变量短声明:=
只可以在一个代码块中进行使用, 同时使用:=
进行声明的变量, 是可以进行重名的, 但是重名的变量需要类型相同。
var err error n, err := io.WriteString(os.Stdout, "Hello, everyone")
代码块就是用来限制变量的作用域的, 同时还可以做一种数据结构。
类型断言表达式
value, ok := interface{}(container).([]string)
首先这个表达式叫做类型断言表达式, 作用就是用来一个变量的类型的, 它的格式为:x.(T)
, 其中x
代表需要判断类型的值, 而这个值当下的类型必须是接口类型, 所以, 当这里的container变量类型不是任何接口类型的时候, 我们需要将它转化成某个接口类型的值.
这个表达式会产生两个值, 第一个值是value, 表示成功转化后的值, 第二个值表示类型是否转化成功
可以进行测试一下
package main import "fmt" func main() { var a int = 34 value, ok := interface{}(a).(int) if ok == true { fmt.Println(value) } }
类型断言的使用场景:
- 判断指针是否为空
- 判断一个变量类型
- 配合switch语句进行使用
别名类型和潜在类型
在Go语言中可以使用type关键字来自定义各种类型,这些类型必须在Go语言基本类型和高级类型的范畴之类,在它们当中, 有一个叫做别名类型的东西, 从别名类型这个名字上我们就可以看出, 它和源类型的区别就在于它们的名字上。
别名类型
type MyString1 = string
潜在类型
但是是下面这种声明方式就变得不一样了, 下面这种声明方式是声明了一种新的类型
type MyString2 string
这种方式也叫做类型的在定义, 我们也将string称之为MyString2的潜在类型, 潜在类型的含义是
某个类型在本质上是哪个类型。
潜在类型相同的类型是可以进行相互转化的, 因此, MyString2类型的值与string类型的值
可以使用类型转化表达式进行互转。
但是对于下面这种情况又是不可以转的:
var a []string var b []MyString2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南