发布时间:2024-12-22 22:57:48
```go type Person struct { Name string Age int } ```
在上面的代码中,我们定义了一个名为`Person`的结构体,它有两个字段:`Name`和`Age`,分别代表人的姓名和年龄。```go p := Person{ Name: "Alice", Age: 28, } ```
在上面的代码中,我们使用结构体字面值`Person{}`来创建一个`Person`类型的实例,并为`Name`和`Age`字段提供初始值。```go fmt.Println(p.Name) // 输出:Alice fmt.Println(p.Age) // 输出:28 ```
在上面的代码中,我们使用`.`操作符来访问结构体实例`p`的`Name`和`Age`字段,并将它们打印出来。```go type Person struct { Name string Age int } p := &Person{ Name: "Bob", Age: 32, } fmt.Println((*p).Name) // 输出:Bob fmt.Println((*p).Age) // 输出:32 ```
在上面的代码中,我们定义了一个指向`Person`类型的指针变量`p`,并为其赋予结构体字面值。通过使用`(*p).Field`的方式,我们可以访问结构体指针`p`的字段值。```go type Address struct { City string State string } type Person struct { Name string Age int Address Address } p := Person{ Name: "Charlie", Age: 42, Address: Address{ City: "New York", State: "NY", }, } fmt.Println(p.Name) // 输出:Charlie fmt.Println(p.Age) // 输出:42 fmt.Println(p.Address.City) // 输出:New York fmt.Println(p.Address.State) // 输出:NY ```
在上面的代码中,我们定义了一个`Person`结构体和一个`Address`结构体。然后,在`Person`结构体中嵌套了`Address`结构体。通过嵌套结构体,我们可以方便地访问内部结构体的字段值。```go type Person struct { Name string Age int } func (p Person) SayHello() { fmt.Println("Hello, my name is", p.Name) } p := Person{ Name: "David", Age: 35, } p.SayHello() // 输出:Hello, my name is David ```
在上面的代码中,我们为`Person`结构体定义了一个名为`SayHello`的方法。该方法可以访问结构体实例的`Name`字段,并打印出问候语。 通过使用结构体方法,我们可以在结构体上实现各种功能,使其更具有封装性和可复用性。