结构体

结构体

代码

//example.go
package test

import "fmt"

//结构体是自定义数据类型
//定义一个结构体
type User struct {
	Name string
	Id   uint32
}

//结构体的继承,两种方法
//代表Account继承自User
type Account struct {
	User     `user:"名字"` //结构体标签,格式:`key1:"value1" key2:"value2"`
	Password string
}

//代表Contact继承自User
type Contact struct {
	*User
	Name   string
	Remark string
}

func Struct() {
	//声明一个结构体类型的变量
	var u1 User = User{
		Name: "张三",
	}
	u1.Id = 10000
	//声明一个结构体指针
	// var u2 *User = new(User) //第一种声明方式
	var u2 *User = &User{
		Name: "ggg",
	}
	(*u2).Id = 20000  //可以简写为u2.Id
	(*u2).Name = "李四" //可以简写为u2.Name
	fmt.Println(u2.Id, u2.Name)

	var a1 = Account{
		User: User{
			Name: u1.Name,
		},
		Password: "666",
	}
	fmt.Println(a1.Name, a1.Id, a1.Password)

	var c1 *Contact = &Contact{
		User: &User{
			Id: u2.Id,
		},
		Remark: "王麻子",
	}

	c1.Name = "王五" //c1.User.Name = "王五"(当没有重复字段时,c1.Name == c1.User.Name)
	c1.User.Name = "赵六"
	fmt.Println("a1=", a1) //a1= {{张三 0} 666}
	fmt.Println("c1=", c1) //c1= &{0xc000008048 王五 王麻子}
	fmt.Println(c1.User)   //&{赵六 20000}
}
//main.go
package main

import "GoExample/test"

func main() {
	test.Struct()
}
    个人感觉:继承不就是结构体的嵌套吗?
	本博客参考自:
		https://www.bilibili.com/video/BV1s341147US/?spm_id_from=333.337.search-card.all.click&vd_source=a642bb3ddc5b706845426dc41d73fbda
posted @   夏目^_^  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示