面试题答案
一键面试// 假设枚举类型
enum MyEnum {
Variant1,
Variant2,
}
// 自定义结构体
struct MyStruct {
num: i32,
str_slice: Vec<String>,
my_enum: MyEnum,
}
fn main() {
let my_struct = MyStruct {
num: 42,
str_slice: vec!["hello".to_string(), "world".to_string()],
my_enum: MyEnum::Variant1,
};
let output = format!(
"MyStruct: num = {}, str_slice = {:?}, my_enum = {}",
my_struct.num,
my_struct.str_slice,
match my_struct.my_enum {
MyEnum::Variant1 => "Variant1",
MyEnum::Variant2 => "Variant2",
}
);
println!("{}", output);
}
- 定义枚举类型和结构体:首先定义了一个枚举类型
MyEnum
和一个包含整数、字符串切片和枚举类型的结构体MyStruct
。 - 实例化结构体:在
main
函数中创建了MyStruct
的实例。 - 使用
format!
宏:在format!
宏中,使用{}
占位符来指定输出格式。对于整数num
直接输出,对于字符串切片str_slice
使用{:?}
以调试格式输出(可以清晰展示内容),对于枚举类型my_enum
,通过match
语句将其转换为易读的字符串输出。最后使用println!
将格式化后的字符串输出到控制台。
若使用其他编程语言,思路类似,但语法会有所不同,例如在Go语言中:
package main
import (
"fmt"
)
// 定义枚举类型(Go中没有枚举关键字,用常量模拟)
type MyEnum int
const (
Variant1 MyEnum = iota
Variant2
)
// 定义结构体
type MyStruct struct {
num int
strSlice []string
myEnum MyEnum
}
func main() {
myStruct := MyStruct{
num: 42,
strSlice: []string{"hello", "world"},
myEnum: Variant1,
}
var enumStr string
switch myStruct.myEnum {
case Variant1:
enumStr = "Variant1"
case Variant2:
enumStr = "Variant2"
}
output := fmt.Sprintf("MyStruct: num = %d, strSlice = %v, myEnum = %s", myStruct.num, myStruct.strSlice, enumStr)
fmt.Println(output)
}
- 定义枚举类型和结构体:在Go语言中通过常量模拟枚举类型
MyEnum
,并定义了包含相应字段的结构体MyStruct
。 - 实例化结构体:在
main
函数中创建MyStruct
实例。 - 使用
fmt.Sprintf
:fmt.Sprintf
类似Rust中的format!
宏,通过格式化字符串和switch
语句处理枚举类型,将结构体信息格式化为易读的字符串并输出到控制台。