Go语言--复合类型之map、结构体
map
Go 语言中的 map(映射、字典)是一种内置的数据结构,它是一个无序的 key-value 对的集合,比如以身份证号作为唯一键来标识一个人的信息。

格式
map [keyType]valueType
在一个 map 里所有的键都是唯一的,而且必须是支持==和!=操作符的类型,切片、函数以及包含切片的结构类型这些类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译错误:。
map 值可以是任意类型,没有限制。map 里所有键的数据类型必须是相同的,值也必须相同,但键和值的数据类型可以不相同。
- 注意:map是无序的,我们无法决定它的返回顺序,所以,每次打印结果的顺利有可能不同。

map只有len,没有cap - 可以指定容量,系统会分配响应的内存给map,这样不需要在插入元素的时候在一个一个进行扩容,同时,超过指定的容量,map也会自动扩容。
- 键值一定是唯一的

map的创建
- 传统创建
- 通过make创建,并且可以指定长度
- 初始化

map的遍历
- 通过循环来进行遍历
- 如何判断一个key值是否存在:
value, ok := m3[0]第一个返回值为key所对应的value,第二个返回值为key是否存在的条件,存在ok为true

map删除某一个key值
- 通过
delete(map,key)可以删除map中指定key的元素。

map做函数参数—引用传递

结构体
有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别年龄/地址等属性。显然单独定义以上变量比较繁琐,数据不便于管理。

结构体是一种聚合的数据类型,它是由一系列只有相同类型或不同类型的数据构成的数据集合。每个数据称为结构体的成员。
语法
type Student struct {id intname stringsex byteage intaddr string
}
结构体的初始化
- 顺序初始化,每个成员必须初始化
- 指定成员初始化,没有初始化为默认为0

结构体指针遍历初始化
加*以及&符即可

操作结构体成员
通过.运算符来操作成员。

操作指针变量
- 只能使用
.运算符 - 可以先定义一个普通结构体变量,在使指针变量保存结构体变量的地址,这样指针有了合法的指向以后在进行操作结构体成员;
- 也可以通过
new来申请一个结构体,操作结构体成员

结构体的比较
如果结构体的全部成员都是可以比较的,那么结构体也是可以比较的,那样的话两个结构体将可以使用==或!=运算符进行比较,但不支持>或<。同类型的2个结构体变量可以相互赋值。

结构体做函数参数
值传递,形参无法改变

地址传递–形参可以改变实参

可见性
Go 语言对关键字的增加非常吝啬,其中没有private、protected、 public 这样的关键字。
要使某个符号对其他包(package)可见(即可以访问),需要将该符号定义为以大写字母开头。如果是小写,只能在同一个包里面使用。
结构体也是一样的

不同的包,想要操作别的包结构体的变量,也必须保证结构体成员的首字母是大写的。

相关文章:
Go语言--复合类型之map、结构体
map Go 语言中的 map(映射、字典)是一种内置的数据结构,它是一个无序的 key-value 对的集合,比如以身份证号作为唯一键来标识一个人的信息。 格式 map [keyType]valueType 在一个 map 里所有的键都是唯一的,而且必须是支持和!操作符的类型…...
Stable Diffusion图像的脸部细节控制——采样器全解析
文章目录 艺术地掌控人物形象好易智算原因分析为什么在使用Stable Diffusion生成全身图像时,脸部细节往往不够精细? 解决策略 局部重绘采样器总结 艺术地掌控人物形象 在运用Stable Diffusion这一功能强大的AI绘图工具时,我们往往会发现自己…...
CurrentHashMap巧妙利用位运算获取数组指定下标元素
先来了解一下数组对象在堆中的存储形式【数组长度,数组元素类型信息等】 【存放元素对象的空间】 Ma 基础信息实例数据内存填充Mark Word,ClassPointer,数组长度第一个元素第二个元素固定的填充内容 所以我们想要获取某个下标的元素首先要获取这个元素的起始位置…...
实现antd designable平台的组件拖拽功能
平台:designable设计器 github:designable 目录 1 背景2 技术栈3 组件拖拽和放置3.1 类型定义3.2 拖拽3.3 放置 1 背景 由于业务需求,我们需要实现designable平台的一个简易版的组件拖拽功能。 #mermaid-svg-QrxSDGe9YyGG3LbQ {font-family:…...
计算机网络-IP组播基础
一、概述 在前面的学习交换机和路由协议,二层通信是数据链路层间通信,在同一个广播域间通过源MAC地址和目的MAC地址进行通信,当两台主机第一次通信由于不清楚目的MAC地址需要进行广播泛洪,目的主机回复自身MAC地址,然后…...
Git删除了文件拉取时失败
本地删除了一些文件,远端的另一个提交修改了被删除的文件,vs里拉取时提示未处理的提交,无法继续操作,git gui里显示很多unstaged change的项 解决办法: 1、用git bash的git rm --cached filename或 git rm -r --cached…...
【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令
大致介绍了一下管道、环境变量、一些常用的基本命令,可以当作学习笔记收藏学习一下!!! 文章目录 前言 一、管道 二、环境变量 1.概念 2.查看 3.修改 4.常用环境变量 三、系统状况 总结 前言 大致介绍了一下管道、环境变量、一些常…...
Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 一、Apache Kafka Streams简介 Apache Kafka Streams是一个用于构…...
Unity中使用VectorGraphics插件时,VectorUtils.RenderSpriteToTexture2D方法返回结果错误的解决方法
Unity中使用VectorGraphics插件时,如果使用VectorUtils.BuildSprite方法创建Sprite,那么得到的Sprite往往是一个三角网格数比较多的Sprite,如果想要得到使用贴图只有两个三角面的方形Sprite,可以使用该插件提供的VectorUtils.Rend…...
用MySQL+node+vue做一个学生信息管理系统(一):配置项目
先用npm init -y生成配置文件 在项目下新建src文件夹,app.js文件。src目录用来放静态资源文件,app.js是服务器文件,index.js是vue的入口文件 使用npm install express下载express框架 在app.js文件夹开启node服务,监听的端口为…...
2024年06月CCF-GESP编程能力等级认证Python编程二级真题解析
本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…...
Unity动画系统(2)
6.1 动画系统基础2-3_哔哩哔哩_bilibili p316 模型添加Animator组件 动画控制器 AnimatorController AnimatorController 可以通过代码控制动画速度 建立动画间的联系 bool值的设定 trigger p318 trigger点击的时候触发,如喊叫,开枪及换子弹等&#x…...
深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇
序言 反向传播(Backpropagation,简称backprop)是神经网络训练过程中最关键的技术之一,尤其在多层神经网络中广泛应用。它是一种与优化方法(如梯度下降法)结合使用的算法,用于计算网络中各参数的…...
自动化设备上位机设计 四
目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 using SimpleTCP; using SqlSugar; using System.Text;namespace 自动化上位机设计 {public partial class Form1 : Form{SqlHelper sqlHelper new SqlHelper();SqlSugarClient dbContent null;bool IsRun false;i…...
[leetcode hot 150]第二十三题,合并K个升序链表
题目: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:…...
MybatisPlus实现插入/修改数据自动设置时间
引言 插入数据时自动设置当前时间,更新数据时自动修改日期为修改时的日期。 使用MybatisPlus的扩展接口MetaObjectHandler 步骤 实现接口 实体类加注解 实现接口 package com.example.vueelementson.common;import com.baomidou.mybatisplus.core.handlers.M…...
Java语言程序设计篇一
Java语言概述 Java语言起源编程语言最新排名名字起源Java语言发展历程Java语言的特点Java虚拟机垃圾回收Java语言规范Java技术简介Java程序的结构Java程序注意事项:注释编程风格练习 Java语言起源 1990年Sun公司提出一项绿色计划。1992年语言开发成功最初取名为Oak…...
Calicoctl工具学习 —— 筑梦之路
官方文档: Calico Documentation | Calico Documentation 插件方式安装 calicoctl 工具 curl -o kubectl-calico -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.0/calicoctl"cp kubectl-calico /usr/bin/kubectl-calic…...
Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记
EuroSys 2024 Paper 论文阅读笔记整理 问题 近似成员关系查询(AMQ)数据结构可以高效地近似确定元素是否在集合中,例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长…...
PyTorch学习之torch.transpose函数
PyTorch学习之torch.transpose函数 一、简介 torch.transpose 函数我们用于交换张量的维度。 二、语法 torch.transpose 函数用于交换给定张量的两个维度,其语法如下: torch.transpose(input, dim0, dim1)三、参数 input:待交换维度的张…...
StructBERT中文句子匹配效果展示:客服问题精准召回、论文查重阈值调优案例
StructBERT中文句子匹配效果展示:客服问题精准召回、论文查重阈值调优案例 1. 引言:为什么需要精准的句子匹配? 在日常工作和生活中,我们经常遇到这样的场景: 客服系统中,用户问"怎么修改登录密码&…...
OpenClaw硬件适配:Qwen3-14B在低配电脑上的优化运行
OpenClaw硬件适配:Qwen3-14B在低配电脑上的优化运行 1. 当高性能需求遇上低配设备 去年冬天,我在一台2015年的MacBook Air上第一次尝试运行OpenClaw。这台只有4GB内存的老机器,连Chrome开三个标签页都会卡顿,却要承载Qwen3-14B这…...
从理论到实践:基于MATLAB的ZF、ML、MRC与MMSE信号检测算法性能深度剖析
1. 信号检测算法入门:从通信系统到MATLAB实现 第一次接触信号检测算法时,我被各种缩写搞得晕头转向。直到在MIMO系统项目中真正用MATLAB实现了这些算法,才明白它们就像不同的"翻译官",负责把混乱的接收信号还原成原始信…...
gte-base-zh WebUI安全加固:禁用CORS、关闭Swagger UI、限制Referer白名单
gte-base-zh WebUI安全加固:禁用CORS、关闭Swagger UI、限制Referer白名单 重要提示:本文介绍的安全加固方案适用于生产环境部署,可有效防止未授权访问和数据泄露风险。 1. 为什么需要WebUI安全加固 当你使用xinference部署gte-base-zh embe…...
Socket.IO-Client-Swift终极安全指南:TLS/SSL配置和证书认证详解
Socket.IO-Client-Swift终极安全指南:TLS/SSL配置和证书认证详解 【免费下载链接】socket.io-client-swift 项目地址: https://gitcode.com/gh_mirrors/so/socket.io-client-swift Socket.IO-Client-Swift是一款功能强大的Swift客户端库,用于与S…...
使用python给pdf文档自动添加目录书签
1.背景很多时候电子书pdf没有书签目录,阅读起来不方便,于是给它自动加个目录吧2.步骤步骤一:使用ds获取到目录json截图目录,到ds中,然后输入如下提示词:根据目录的图片,提取出如下格式的json目录数据: {"title": "第一章 概述","page": 6,"…...
IBM与Arm合作推进双架构主机系统开发
IBM和Arm宣布合作开发能够运行IBM和Arm双重工作负载的硬件,使Arm软件能够在IBM主机上运行。两家公司计划在三个方面展开合作:构建虚拟化工具,让Arm软件能够在IBM平台上运行;确保Arm应用程序符合受监管行业必须遵循的安全和数据驻留…...
大一C语言期末必考|程序结构+流程控制(详解+例题+易错点)一
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...
Linux端口占用排查:工具与实战技巧
1. 网络端口占用排查的必要性遇到"Address already in use"错误提示时,每个Linux系统管理员都会心头一紧。这种端口冲突问题不仅影响服务启动,还可能导致关键业务中断。我刚入行时就曾因为Nginx和Apache争抢80端口,导致公司官网瘫痪…...
如何快速上手接口测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 大量线上BUG表明,对接口进行测试可以有效提升产品质量,暴露手工测试时难以发现的问题,同时也能缩短测试周期,提升测…...
