惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
WordPress大学
WordPress大学
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
罗磊的独立博客
The Cloudflare Blog
V
V2EX
月光博客
月光博客
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
GbyAI
GbyAI
博客园 - 【当耐特】
T
Tailwind CSS Blog

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 Kubernetes — k8s 手动安装 1.17.9 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升
go Struct 结构体
2022-04-26 · via 博客 on 打工人日志

go Struct 结构体

结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合

声明结构体

 1//demo_11.go
 2package main
 3
 4import (
 5	"fmt"
 6)
 7
 8type Person struct {
 9	Name string
10	Age int
11}
12
13func main() {
14	var p1 Person
15	p1.Name = "Tom"
16	p1.Age  = 30
17	fmt.Println("p1 =", p1)
18
19	var p2 = Person{Name:"Burke", Age:31}
20	fmt.Println("p2 =", p2)
21
22	p3 := Person{Name:"Aaron", Age:32}
23	fmt.Println("p2 =", p3)
24
25	//匿名结构体
26	p4 := struct {
27		Name string
28		Age int
29	} {Name:"匿名", Age:33}
30	fmt.Println("p4 =", p4)
31}

生成 JSON

 1//demo_12.go
 2package main
 3
 4import (
 5	"encoding/json"
 6	"fmt"
 7)
 8
 9type Result struct {
10	Code    int    `json:"code"`
11	Message string `json:"msg"`
12}
13
14func main() {
15	var res Result
16	res.Code    = 200
17	res.Message = "success"
18
19	//序列化
20	jsons, errs := json.Marshal(res)
21	if errs != nil {
22		fmt.Println("json marshal error:", errs)
23	}
24	fmt.Println("json data :", string(jsons))
25
26	//反序列化
27	var res2 Result
28	errs = json.Unmarshal(jsons, &res2)
29	if errs != nil {
30		fmt.Println("json unmarshal error:", errs)
31	}
32	fmt.Println("res2 :", res2)
33}

改变数据

 1//demo_13.go
 2package main
 3
 4import (
 5	"encoding/json"
 6	"fmt"
 7)
 8
 9type Result struct {
10	Code    int    `json:"code"`
11	Message string `json:"msg"`
12}
13
14func main() {
15	var res Result
16	res.Code    = 200
17	res.Message = "success"
18	toJson(&res)
19
20	setData(&res)
21	toJson(&res)
22}
23
24func setData (res *Result) {
25	res.Code    = 500
26	res.Message = "fail"
27}
28
29func toJson (res *Result) {
30	jsons, errs := json.Marshal(res)
31	if errs != nil {
32		fmt.Println("json marshal error:", errs)
33	}
34	fmt.Println("json data :", string(jsons))
35}