当前位置: 首页 > article >正文

4. Go结构体使用

1、结构体的简介

结构体(Struct)是编程语言中常见的一种复合数据类型,它将不同类型的数据元素(成员)组合成一个单一的实体。通过结构体,程序员可以将具有不同类型和性质的信息绑定到一个对象中,方便对这些信息的存储、传递和操作。

2、结构体的特点

  • 聚合性:结构体可以将不同类型的数据组合成一个实体。
  • 成员:每个结构体都有若干成员,每个成员可以是不同的数据类型,成员在结构体中通常按顺序排列。
  • 整体性:结构体可以作为一个整体进行传递、复制、返回等操作。

3、结构体的经典应用场景:

一个常见的例子服务器是运维人员经常管理的对象,通常需要存储每台服务器的一些基本信息,比如服务器的 IP 地址、操作系统、CPU、内存、存储、状态等

结构体的运维案例:服务器信息

假设我们需要管理一个公司内部的服务器,每台服务器可能会有以下信息:

  • IP 地址:服务器的 IP 地址;
  • 操作系统:服务器运行的操作系统(如 Ubuntu、CentOS、RockyLinux等);
  • CPU 数量:服务器的 CPU 核心数;
  • 内存大小:服务器的内存大小;
  • 硬盘空间:服务器的硬盘空间;
  • 状态:服务器的当前状态(如正在运行、宕机等)。
package mainimport "fmt"type Server struct {IPAddress string  // 服务器的IP地址OS        string  // 操作系统CPUCount  int     // CPU核心数Memory    float64 // 内存大小,单位GBDiskSpace float64 // 硬盘空间,单位GBStatus    string  // 服务器状态,可能是 "running"、"down" 或 "maintenance"
}func main() {//使用如下代码创建这台服务器的实例:var a = Server{IPAddress: "192.168.101.100",OS:        "RockyLinux8",CPUCount:  64,Memory:    503,DiskSpace: 10240,Status:    "Running"}fmt.Println(a)
}

  • IPAddress 是服务器的 IP 地址,用来唯一标识每台服务器;
  • OS 表示服务器运行的操作系统,可以是字符串类型,如 “Ubuntu 20.04” 或 “CentOS 7”;
  • CPUCount 表示服务器的 CPU 核心数;
  • Memory 表示服务器的内存大小,单位为 GB;
  • DiskSpace 表示服务器的硬盘空间,单位为 GB;
  • Status 表示服务器的当前状态,可以是如 “running”、“down” 或 “maintenance” 等值。

4、扩展应用场景

  1. 查询和修改服务器信息:运维人员可以通过结构体来查询和修改服务器的各种信息,比如查看某台服务器的状态,或者修改服务器的内存大小。
  2. 批量管理:假设有多个服务器需要管理,我们可以将这些 Server 结构体存储在一个数组或切片中,方便进行批量操作。例如,检查所有服务器的状态,进行维护时对状态为 down 的服务器执行恢复操作等。
  3. 传递和存储:运维平台可以通过结构体将服务器信息传递给其他系统模块,或将结构体存储在数据库中。可以方便地将服务器信息作为函数的参数进行传递。
// 创建多个服务器实例
servers := []Server{{IPAddress: "192.168.1.10",OS:        "Ubuntu 20.04",CPUCount:  8,Memory:    16,DiskSpace: 500,Status:    "running",},{IPAddress: "192.168.1.11",OS:        "CentOS 7",CPUCount:  4,Memory:    32,DiskSpace: 1000,Status:    "down",},
}// 查询某台服务器的状态
for _, s := range servers {fmt.Printf("服务器 %s 状态: %s\n", s.IPAddress, s.Status)
}// 更新某台服务器的状态
servers[1].Status = "running"
fmt.Printf("服务器 %s 状态已更新为: %s\n", servers[1].IPAddress, servers[1].Status)

5、结语

结构体不单独使用,结构体、接口和函数的协同工作,可以协同工作来实现更高效、灵活和模块化的程序设计。这三者的结合能够充分利用 Go 语言的特性,如多态、组合和抽象,提升代码的可维护性和可扩展性。

相关文章:

4. Go结构体使用

1、结构体的简介 结构体(Struct)是编程语言中常见的一种复合数据类型,它将不同类型的数据元素(成员)组合成一个单一的实体。通过结构体,程序员可以将具有不同类型和性质的信息绑定到一个对象中&#xff0c…...

ubuntu20使用tigervnc远程桌面配置记录

一、安装tigervnc sudo apt install tigervnc-common sudo apt install tigervnc-standalone-server二、增加配置文件 安装完后新增配置文件:vim ~/.vnc/xstartup #!/bin/sh #Uncomment the following two lines for normal desktop: #unset SESSION_MANAGER #ex…...

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…...

编译spring 6.2.2

如何编译Spring 6.2.2 下载spring 6.2.2 首先,下载spring 6.2.2,地址:下载 解压到你的目录下。 下载gradle 下载gradle,这是spring项目的依赖管理工具,本文下载的是8.12.1。 gradle idea配置如下:在你的…...

【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)

1. 安装必要的依赖 以 CentOS 7 系统为例,安装必要的依赖包: sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…...

MHTML文件如何在前端页面展示

MHTML文件如何在前端页面展示 需求背景: 目前在给证券公司做项目,但是在使用新系统的过程中,甲方还希望之前之前系统的历史记录可以看到。 最初制定的计划是项目组里面做数据的把原系统页面爬取下来,转成图片,直接给…...

Spring Boot的常用注解

Spring Boot 常用注解 主要分为以下几类: Spring 核心注解Spring Boot 相关注解Spring MVC 相关注解Spring Data JPA 相关注解Spring 事务管理Spring Security 相关注解Spring AOP 相关注解Spring 其他常用注解 下面是详细分类和表格展示👇&#xff1a…...

【R语言】plyr包和dplyr包

一、plyr包 plyr扩展包主要是实现数据处理中的“分割-应用-组合”(split-apply-combine)策略。此策略是指将一个问题分割成更容易操作的部分,再对每一部分进行独立的操作,最后将各部分的操作结果组合起来。 plyr扩展包中的主要函…...

《XSS跨站脚本攻击》

一、XSS简介 XSS全称(Cross Site Scripting)跨站脚本攻击,为了避免和CSS层叠样式表名称冲突,所以改为了XSS,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2013/2017年度分别为第三名和第七名&…...

Golang:精通sync/atomic 包的Atomic 操作

在本指南中,我们将探索sync/atomic包的细节,展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步,你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧! 理解Go中的原子操作 在快…...

代码随想录_二叉树

二叉树 二叉树的递归遍历 144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer&g…...

详解Swift中 Sendable AnyActor Actor GlobalActor MainActor Task、await、async

详解Swift中 Sendable AnyActor Actor GlobalActor MainActor 的关联或者关系 及其 各自的作用 和 用法 以及与 Task、await、async&#xff1a; Sendable 协议 作用&#xff1a; Sendable 是一个协议&#xff0c;它用于标记可以安全地跨线程或异步任务传递的数据类型。符合 S…...

【C语言标准库函数】浮点数分解与构造: frexp() 和 ldexp()

目录 一、头文件 二、函数简介 2.1. frexp(double x, int *exp) 2.2. ldexp(double x, int exp) 三、函数实现&#xff08;概念性&#xff09; 3.1. frexp 的概念性实现 3.2. ldexp 的概念性实现 四、注意事项 五、示例代码 在C语言标准库中&#xff0c;frexp() 和 ld…...

【Git】tortoisegit使用配置

1. 安装 首先下载小乌龟&#xff0c;下载地址:https://tortoisegit.org/download/, 可以顺便下载语言包&#xff01; 安装时&#xff0c;默认安装就可以&#xff0c;一路next。也可以安装到指定目录中 目前已完成本地安装&#xff0c;接下来就需要与远程仓库建立连接&…...

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…...

运维_Mac环境单体服务Docker部署实战手册

Docker部署 本小节&#xff0c;讲解如何将前端 后端项目&#xff0c;使用 Docker 容器&#xff0c;部署到 dev 开发环境下的一台 Mac 电脑上。 1 环境准备 需要安装如下环境&#xff1a; Docker&#xff1a;容器MySQL&#xff1a;数据库Redis&#xff1a;缓存Nginx&#x…...

[论文笔记] Deepseek-R1R1-zero技术报告阅读

启发: 1、SFT&RL的训练数据使用CoT输出的格式,先思考再回答,大大提升模型的数学与推理能力。 2、RL训练使用群体相对策略优化(GRPO),奖励模型是规则驱动,准确性奖励和格式化奖励。 1. 总体概述 背景与目标 报告聚焦于利用强化学习(RL)提升大型语言模型(LLMs)…...

Centos Ollama + Deepseek-r1+Chatbox运行环境搭建

Centos Ollama Deepseek-r1Chatbox运行环境搭建 内容介绍下载ollama在Ollama运行DeepSeek-r1模型使用chatbox连接ollama api 内容介绍 你好&#xff01; 这篇文章简单讲述一下如何在linux环境搭建 Ollama Deepseek-r1。并在本地安装的Chatbox中进行远程调用 下载ollama 登…...

一文读懂:TCP网络拥塞的应对策略与方案

TCP&#xff08;传输控制协议&#xff09;是互联网中广泛使用的可靠传输协议&#xff0c;它通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制确保数据的可靠传输。然而&#xff0c;在网络环境中&#xff0c;由于多个主机共享网络资源&#xff0c;网络拥塞成为了一个…...

SpringSecurity:授权服务器与客户端应用(入门案例)

文章目录 一、需求概述二、开发授权服务器1、pom依赖2、yml配置3、启动服务端 三、开发客户端应用1、pom依赖2、yml配置3、SecurityConfig4、接口5、测试 一、需求概述 maven需要3.6.0以上版本 二、开发授权服务器 1、pom依赖 <dependency><groupId>org.springfr…...

Python与java的区别

一开始接触Python的时候&#xff0c;哔哩视频铺天盖地&#xff0c;看了很多人主讲的&#xff0c;要找适合自己口味的&#xff0c;各种培训机构喜欢在各种平台引流打广告&#xff0c;看了很多家&#xff0c;要么就是一个视频几个小时&#xff0c;长篇大论不讲原理只讲应用&#…...

doris:MySQL 兼容性

Doris 高度兼容 MySQL 语法&#xff0c;支持标准 SQL。但是 Doris 与 MySQL 还是有很多不同的地方&#xff0c;下面给出了它们的差异点介绍。 数据类型​ 数字类型​ 类型MySQLDorisBoolean- 支持 - 范围&#xff1a;0 代表 false&#xff0c;1 代表 true- 支持 - 关键字&am…...

SQL中 的exists用法

EXISTS 是 SQL 中的一个子查询条件&#xff0c;用于检查子查询是否返回任何行。如果子查询返回至少一行&#xff0c;则 EXISTS 返回 TRUE。 例如&#xff0c;查询有订单的客户列表&#xff1a; SELECT * FROM customers c WHERE EXISTS (SELECT 1 FROM orders o WHERE o.cust…...

案例1.spark和flink分别实现作业配置动态更新案例

目录 目录 一、背景 二、解决 1.方法1:spark broadcast广播变量 a. 思路 b. 案例 ① 需求 ② 数据 ③ 代码 2.方法2:flink RichSourceFunction a. 思路 b. 案例 ① 需求 ② 数据 ③ 代码 ④ 测试验证 测试1 测试2 测试3 一、背景 在实时作业(如 Spark Str…...

大数据学习之SparkSql

95.SPARKSQL_简介 网址&#xff1a; https://spark.apache.org/sql/ Spark SQL 是 Spark 的一个模块&#xff0c;用于处理 结构化的数据 。 SparkSQL 特点 1 易整合 无缝的整合了 SQL 查询和 Spark 编程&#xff0c;随时用 SQL 或 DataFrame API 处理结构化数据。并且支…...

鸿蒙UI(ArkUI-方舟UI框架)- 使用文本

返回主章节 → 鸿蒙UI&#xff08;ArkUI-方舟UI框架&#xff09; 文本使用 文本显示 (Text/Span) Text是文本组件&#xff0c;通常用于展示用户视图&#xff0c;如显示文章的文字内容。Span则用于呈现显示行内文本。 创建文本 string字符串 Text("我是一段文本"…...

Spider 数据集上实现nlp2sql训练任务

NLP2SQL&#xff08;自然语言处理到 SQL 查询的转换&#xff09;是一个重要的自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;其目标是将用户的自然语言问题转换为相应的 SQL 查询。这一任务在许多场景下具有广泛的应用&#xff0c;尤其是在与数据库交互的场景中&…...

数据结构——【树模板】

#思路 1、 结点类&#xff1a; 属性&#xff1a;数据&#xff0c;孩子结点列表 功能1&#xff1a;认孩子&#xff1a; 前提&#xff1a;在父子都是结点的情况下 2. 树类&#xff1a; 属性&#xff1a;根节点&#xff0c;生成初始化的总结点 功能1&#xff1a;获取初始化…...

R 数组:高效数据处理的基础

R 数组&#xff1a;高效数据处理的基础 引言 在数据科学和统计分析领域&#xff0c;R 语言以其强大的数据处理和分析能力而备受推崇。R 数组是 R 语言中用于存储和操作数据的基本数据结构。本文将详细介绍 R 数组的创建、操作和优化&#xff0c;帮助读者掌握 R 数组的使用技巧…...

【DeepSeek】DeepSeek概述 | 本地部署deepseek

目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型&#xff0c;以其…...