Rust 学习笔记 08:结构体 (Structs)

Rust 学习笔记 08:结构体 (Structs) “Structure is the maker of light.” – Louis Kahn 在 Go 中,我们用 struct 来组织数据,用 func (s *Struct) Method() 来定义方法。 在 Rust 中,这种感觉非常相似,但细节决定成败。 1. 定义与实例化 定义一个 User 结构体: 1struct User { 2 active: bool, 3 username: String, 4 email: String, 5 sign_in_count: u64, 6} 这和 Go 几乎一模一样(除了字段名为 snake_case,Go 推荐 CamelCase)。 实例化: 1let user1 = User { 2 email: String::from("someone@example.com"), 3 username: String::from("someusername123"), 4 active: true, 5 sign_in_count: 1, 6}; 区别点:如果想修改 user1 的字段,必须把 user1 声明为 mut。Rust 不允许仅把某个字段标记为可变,可变性是针对整个实例的。 ...

2024-10-15 · 2 min · 342 words · 老墨

[GoLang避坑实战-09] 接口即正义:解密 Go 语言"鸭子类型"的实战精髓

大家好,我是极客老墨。 Go 没有类,也没有继承。它用结构体封装数据,用接口定义行为。这种"组合优于继承"的设计,让代码更灵活、更解耦。 这篇就聊聊 Go 的结构体和接口,看看它们是怎么配合工作的。 结构体基础 结构体是一组字段的集合,用来封装相关的数据。 定义和初始化 1// 定义结构体 2type Person struct { 3 Name string 4 Age int 5} 6 7// 初始化方式 1:按字段顺序 8p1 := Person{"Alice", 30} 9 10// 初始化方式 2:指定字段名(推荐) 11p2 := Person{ 12 Name: "Bob", 13 Age: 25, 14} 15 16// 初始化方式 3:部分字段(其余为零值) 17p3 := Person{Name: "Charlie"} // Age 为 0 18 19// 初始化方式 4:使用 new(返回指针) 20p4 := new(Person) 21p4.Name = "David" 要点: ...

2024-09-15 · 9 min · 1710 words · 老墨