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)
}
}

类型断言的使用场景:

  1. 判断指针是否为空
  2. 判断一个变量类型
  3. 配合switch语句进行使用

别名类型和潜在类型

在Go语言中可以使用type关键字来自定义各种类型,这些类型必须在Go语言基本类型和高级类型的范畴之类,在它们当中, 有一个叫做别名类型的东西, 从别名类型这个名字上我们就可以看出, 它和源类型的区别就在于它们的名字上。

别名类型

type MyString1 = string

潜在类型

但是是下面这种声明方式就变得不一样了, 下面这种声明方式是声明了一种新的类型

type MyString2 string

这种方式也叫做类型的在定义, 我们也将string称之为MyString2的潜在类型, 潜在类型的含义是
某个类型在本质上是哪个类型。

潜在类型相同的类型是可以进行相互转化的, 因此, MyString2类型的值与string类型的值
可以使用类型转化表达式进行互转。

但是对于下面这种情况又是不可以转的:

var a []string
var b []MyString2
posted @   wangturing  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示