MST

星途 面试题库

面试题:Go反射中如何获取基础类型的值和类型信息

在Go语言反射机制里,给定一个基础类型的变量(比如int、string),请写出代码示例,展示如何通过反射获取该变量的值以及它对应的类型信息。
30.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "reflect"
)

func main() {
    var num int = 10
    valueOf := reflect.ValueOf(num)
    typeOf := reflect.TypeOf(num)

    fmt.Printf("值: %v\n", valueOf)
    fmt.Printf("类型: %v\n", typeOf)
}
  1. 引入包fmt 用于格式化输出,reflect 用于反射操作。
  2. 定义变量:定义一个 int 类型的变量 num 并赋值为 10
  3. 获取值:通过 reflect.ValueOf(num) 获取变量的 Value 信息。
  4. 获取类型:通过 reflect.TypeOf(num) 获取变量的 Type 信息。
  5. 输出:使用 fmt.Printf 输出变量的值和类型。

如果要处理不同类型,可以将变量定义部分改为函数参数形式,如下:

package main

import (
    "fmt"
    "reflect"
)

func printValueAndType(i interface{}) {
    valueOf := reflect.ValueOf(i)
    typeOf := reflect.TypeOf(i)

    fmt.Printf("值: %v\n", valueOf)
    fmt.Printf("类型: %v\n", typeOf)
}

func main() {
    var num int = 10
    var str string = "hello"

    printValueAndType(num)
    printValueAndType(str)
}

这里定义了一个函数 printValueAndType,接收一个空接口类型的参数,这样可以处理任意类型的变量。在 main 函数中,分别传入 int 类型和 string 类型的变量进行处理。