Go结构体基础学习

532 阅读1分钟

Go结构体基础学习

** 直接看示例代码和注释 **

package main

import "fmt"

// Person 创建一个结构体
type Person struct {
   name   string
   age    int
   gender string
}

func main() {
   fmt.Println("im go .")
   // 实例化结构体
   // 第一种方法
   var p Person
   p.name = "canyon"
   p.age = 24
   p.gender = "男"
   fmt.Printf("first method: 姓名: %v 年龄: %v 性别: %v\n", p.name, p.age, p.gender)

   // 第二种方法
   p2 := Person{}
   p2.name = "张三"
   p2.age = 18
   p2.gender = "男不男"
   fmt.Printf("second method: 姓名: %v 年龄: %v 性别: %v\n", p2.name, p2.age, p2.gender)

   // 第三种方法: 直接赋值
   p3 := Person{
      name:   "李四",
      age:    19,
      gender: "男",
   }
   fmt.Printf("third method: 姓名: %v 年龄: %v 性别: %v\n", p3.name, p3.age, p3.gender)
   p4 := Person{
      "王五", 20, "女吧",
   }
   fmt.Printf("third-2 method: 姓名: %v 年龄: %v 性别: %v\n", p4.name, p4.age, p4.gender)
   fmt.Println("——————————————————————————————————")

   // 创建结构体指针
   var pp1 *Person
   fmt.Print("pp1: ", pp1) //
   fmt.Printf("%T\n", pp1)
   // p3的内存地址赋值给pp1
   pp1 = &p3
   fmt.Printf("%T\n", pp1)
   fmt.Printf("%p, %T\n", pp1, pp1)
   fmt.Println("p3: ",p3)
   // 这个指针存储的地址对应的数据
   fmt.Println("指针存的数据: ", *pp1)
   pp1.name = "李六" 等价于  (*pp1).name = "李六"
   fmt.Println("指针存的数据: ", *pp1)
   fmt.Println("p3的数据: ", p3)
}