MST

星途 面试题库

面试题:Go语言中类型转换和类型断言的基础区别

在Go语言里,简要阐述类型转换和类型断言的主要区别,并分别举例说明在何种场景下会使用到它们。
24.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

类型转换(Type Conversion)

  1. 主要区别:类型转换是显式地将一种类型的值转换为另一种类型。它用于在不同类型之间进行数据的强制转换,前提是这些类型之间存在合理的转换规则。在编译时就确定转换是否合法。
  2. 使用场景举例:在数值类型之间的转换,比如将int转换为float64以进行更精确的数值计算。
package main

import (
    "fmt"
)

func main() {
    var num int = 10
    var result float64
    result = float64(num) * 1.5
    fmt.Println(result)
}

类型断言(Type Assertion)

  1. 主要区别:类型断言用于在运行时检查接口值的动态类型,并将接口值转换为具体类型。它操作的对象是接口类型的值,并且在运行时才会判断断言是否成功,如果断言失败会导致程序运行时错误(panic),除非使用带检测的断言形式。
  2. 使用场景举例:当你有一个接口类型的变量,需要根据其实际类型进行不同的处理时。比如在一个函数中传入了一个接口类型参数,该参数可能是不同类型的值,通过类型断言来判断实际类型并做相应处理。
package main

import (
    "fmt"
)

func main() {
    var i interface{} = "hello"
    s, ok := i.(string)
    if ok {
        fmt.Println("It's a string:", s)
    } else {
        fmt.Println("Not a string")
    }
}