version | example_title |
---|---|
1.0.0 |
Struct |
struct是一种复合数据类型(或记录)声明,它在内存块中的一个名称下定义物理分组的变量列表,允许通过单个指针或通过返回相同地址的struct声明的名称访问不同的变量。 对于来自[OOP]https://en.wikipedia.org/wiki/Object-oriented_programming) 语言的人来说,它可以被认为是“类”,但有更多的限制。
struct User {
name string
email string
country string
}
fn main() {
user := User {
name: "V developers"
email: "[email protected]"
country: "Canada"
}
println(user.country)
}
注意:结构是在堆栈上分配的。
创建结构的新实例时,可以使用逗号分隔每个字段。当您想在一行上创建一个新实例时,它很有用。
user := User { name: "V developers", email: "[email protected]", country: "Canada" }
您还可以在堆上分配一个结构,并使用&
前缀获取对它的引用,如下所示:
user := &User{"V developers", "[email protected]", "Canada"}
println(user.name)
user
的类型是&user
。它是对User
的引用。
默认情况下,结构字段是private
和immutable
。它们的访问修饰符可以用pub
和mut
更改。
struct User {
email string // private and immutable (default)
}
您可以将它们定义为private mutable
。
struct User {
email string
mut:
first_name string // private mutable
last_name string // (you can list multiple fields with the same access modifier)
}
您还可以将它们定义为public immutable
(只读)。
struct User {
email string
mut:
first_name string
last_name string
pub:
sin_number int // public immutable (readonly)
}
或作为public
,但仅在父模块中是mutable
。
struct User {
email string
mut:
first_name string
last_name string
pub:
sin_number int
pub mut:
phone int // public, but mutable only in parent module
}
或父模块内外的public
和mutable
。
struct User {
email string
mut:
first_name string
last_name string
pub:
sin_number int
pub mut:
phone int
__global:
address_1 string // public and mutable both inside and outside parent module
address_2 string // (not recommended to use, that's why the 'global' keyword
city string // starts with __)
country string
zip string
}
-
struct
的名称应始终为大写。 -
变量命名使用
Snake_Case
。
1.创建存储和显示“用户”信息的结构。 2.创建一个包含“x”和“y”字段的“Point”结构,并用private和public保护它们。