Skip to main content

go 类型断言 vs 取值操作符

在 Go 中,类型断言和取值操作符在不同的上下文中使用:

类型断言

  • 语法: x.(T)
  • 用途: 将接口类型转换为具体类型。
  • 使用场景:
    • 当你有一个接口类型变量,并且你确定它的具体实现类型时。
    • 例如,tm.(*timer) 将接口 tm 转换为具体类型 *timer

取值操作符

  • 语法: *x
  • 用途: 获取指针所指向的值。
  • 使用场景:
    • 当你有一个指针,并需要访问它指向的值时。
    • 例如,*ptr 获取指针 ptr 指向的值。

区别

  • 类型断言: 用于接口类型,确保并转换为具体类型。
  • 取值操作符: 用于指针,访问指针指向的值。

示例

var i interface{} = "hello"

// 类型断言
s, ok := i.(string)
if ok {
fmt.Println("String:", s)
}

// 指针取值
var num int = 42
ptr := &num
value := *ptr // value is 42

理解这两者的不同应用场景可以帮助你在 Go 中正确使用它们。