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

GO学习记录

这里写目录标题

  • 00 环境
  • 01 语言基础
    • 二级目录
      • 三级目录

00 环境

参考的:https://www.liwenzhou.com/posts/Go/install/

编译运行:

go mod init <项目名>   // 在目录下创建项目
go mod init <项目名>   // 编译go run <文件名>.go     //快速运行

01 语言基础

匿名变量用一个下划线_表示,不占用命名空间,不会分配内存

数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。
[n]T表示指针数组,[n]T表示数组指针 。

切片每次扩容后都是扩容前的2倍。

在Go语言中对于引用类型的变量,我们在使用的时候不仅要声明它,还要为它分配内存空间,否则我们的值就没办法存储。而对于值类型的声明不需要分配内存空间,是因为它们在声明的时候已经默认分配好了内存空间。

make也是用于内存分配的,区别于new,它只用于slice、map以及channel的内存创建,而且它返回的类型就是这三个类型本身,而不是他们的指针类型,因为这三种类型就是引用类型,所以就没有必要返回他们的指针了。而new用于类型的内存分配,并且内存对应的值为类型零值,返回的是指向类型的指针。

使用&对结构体进行取地址操作相当于对该结构体类型进行了一次new实例化操作。

p3 := &person{}
fmt.Printf("%T\n", p3)     //*main.person
fmt.Printf("p3=%#v\n", p3) //p3=&main.person{name:"", city:"", age:0}
p3.name = "七米"
p3.age = 30
p3.city = "成都"
fmt.Printf("p3=%#v\n", p3) //p3=&main.person{name:"七米", city:"成都", age:30}

p3.name = "七米"其实在底层是(*p3).name = “七米”,这是Go语言帮我们实现的语法糖。

结构体占用一块连续的内存。

问题:

type student struct {name stringage  int
}func main() {m := make(map[string]*student)stus := []student{{name: "小王子", age: 18},{name: "娜扎", age: 23},{name: "大王八", age: 9000},}for _, stu := range stus {m[stu.name] = &stu}for k, v := range m {fmt.Println(k, "=>", v.name)		// 娜扎 => 大王八}                                       // 大王八 => 大王八
}                                           // 小王子 => 大王八

chatGPT的解释:
在 Go 语言中,range 循环中的迭代变量 stu 是对切片中每个元素的拷贝,而不是直接引用切片中的元素。因此,虽然 stu 的值在循环迭代中会改变,但它实际上是对切片中相应元素的一个副本。
在循环迭代中,stu 每次都会被重新赋值为切片中的下一个元素,而不是引用切片中元素的地址。因此,&stu 取的地址是固定的,但指向的内存地址会随着 stu 的重新赋值而改变。

当访问结构体成员时会先在结构体中查找该字段,找不到再去嵌套的匿名字段中查找。

GO通过嵌套匿名结构体实现继承

二级目录

三级目录

相关文章:

GO学习记录

这里写目录标题 00 环境01 语言基础二级目录三级目录 00 环境 参考的&#xff1a;https://www.liwenzhou.com/posts/Go/install/ 编译运行&#xff1a; go mod init <项目名> // 在目录下创建项目 go mod init <项目名> // 编译go run <文件名>.go …...

迭代器模式(Iterator Pattern)

定义 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种方法来顺序访问聚合对象中的各个元素&#xff0c;而不需要暴露该对象的内部表示。迭代器模式使得客户端代码能够独立于聚合对象的具体实现进行遍历操作。 在迭代器模式…...

KL divergence(KL 散度)详解

本文用一种浅显易懂的方式说明KL散度。 参考资料 KL散度本质上是比较两个分布的相似程度。 现在给出2个简单的离散分布&#xff0c;称为分布1和分布2. 分布1有3个样本&#xff0c; 其中A的概率为50%, B的概率为40%&#xff0c;C的概率为10% 分布2也有3个样本&#xff1a; 其…...

AzerothCore@FreeBSD安装记录

尝试在FreeBSD系统下安装AzerothCore 首先安装相关软件 pkg install cmake mysql80-server boost-all装完mysql之后提示&#xff1a; MySQL80 has a default /usr/local/etc/mysql/my.cnf, remember to replace it with your own or set mysql_optfile"$YOUR_CNF_FILE i…...

vue .env配置环境变量

最近使用的不同的环境有点多了&#xff0c;接口文件ip一直在替换打包&#xff0c;看了下文档&#xff0c;有个方案使用.env配置不同的环境运行打包 vue 现在已经兼容了env &#xff0c;无需下载 创建文件&#xff08;根目录&#xff09; 创建.env.development&#xff0c;.env.…...

ThreadLocal介绍

文章目录 ThreadLocal源码分析&#xff1a;set方法get方法remove方法 ThreadLocal内存泄漏问题 ThreadLocal ThreadLocal提供了线程局部变量&#xff0c;每个线程都可以通过set和get方法来对这个变量进行操作&#xff0c;但不会和其他线程的局部变量冲突&#xff0c;实现了线程…...

【Linux系统化学习】线程概念

目录 线程的概念 线程的引出 什么是线程 理解线程比进程更加的轻量化 线程的优点 现成的缺点 线程异常 线程用途 Linux进程VS线程 线程的简单现象 线程的概念 有关操作系统的书籍或者课本都会这样描述线程&#xff1a; 线程是比进程轻量化的一种执行流线程是进程内部…...

Redis集群模式

分片 面试题&#xff1a;为什么Redis的最大槽位是16384&#xff1f; 翻译一下作者的话&#xff1a; 解读一下&#xff1a;...

执行go get xxx报错

1、执行命令 go get github.com/go-redis/redis/v8 报错 &#xff1a; go: coding.jd.com/xxx/xxxxxxv0.0.0-xxxxxxxxxx: invalid version: git ls-remote -q origin in /users/douhao7/go/pkg/mod/cache/vcs/xxxxxxxxxxxxxx: exit status 128: 致命错误:could not read use…...

MATLAB基础语法与实践

文章目录 初级篇MATLAB简介特点 安装和配置界面介绍 中级篇基础语法变量表达式函数 数据类型整数和浮点数复数字符串单元数组 高级篇脚本与函数编写脚本编写函数编写 图形绘制数据分析 实践篇实例演示1&#xff1a;矩阵运算实例演示2&#xff1a;数据可视化 初级篇 MATLAB简介…...

智能边缘小站 CloudPond(低延迟、高带宽和更好的数据隐私保护)

智能边缘小站 CloudPond(低延迟、高带宽和更好的数据隐私保护) 边缘小站的主要功能是管理用户在线下部署的整机柜设施&#xff0c;一个边缘小站关联一个华为云指定的区域和一个用户指定的场地&#xff0c;相关的资源运行状况监控等。 边缘计算 迈入5G和AI时代&#xff0c;新…...

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测&#xff08;完整…...

LeetCode15:三数之和

题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组…...

【详识JAVA语言】面向对象程序三大特性之三:多态

多态 多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 多态实现条件 在java中要实现多态&#xff0c;必须要满足如下几个条件&#xff0c;缺一不可&#xf…...

nginx(三)实现反向代理客户端 IP透传

正常情况下&#xff0c;客户端去访问代理服务器&#xff0c;然后代理服务器再取访问真实服务器&#xff0c;在真实服务器上&#xff0c;只能显示代理服务器的ip地址&#xff0c;而不显示客户端的ip地址&#xff0c;如果想让客户端的ip地址也能在真实服务端看见&#xff0c;这一…...

深入Java日志框架及其最佳实践

概述 在Java应用开发中&#xff0c;日志框架是确保应用稳定性和可观察性的关键组件。它帮助开发者记录应用的行为、诊断问题&#xff0c;并监控系统的健康状况。随着Java生态系统的不断发展&#xff0c;各种日志框架也应运而生&#xff0c;各有特点和优势。本文将详细探讨几个…...

threejs显示本地硬盘上的ply文件,通过webapi

由于ply文件是第三方提供的&#xff0c;threejs无法用绝路路径的方式显示ply 所以想通过webapi把ply通过url地址的方式给threejs 1.webapi部分 /// <summary>/// 获取PLY文件/// </summary>/// <returns></returns>[HttpPost(Name "GetPly&qu…...

代码随想录day10(2)字符串:反转字符串Ⅱ (leetcode541)

题目要求&#xff1a;给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起, 每计数至 2k 个字符&#xff0c;就反转这 2k 个字符中的前 k 个字符。如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个&#xff0c;则反转前…...

【MySQL】_联合查询基础表

联合查询也称为多表查询&#xff0c;是将多个表联合到一起进行查询&#xff1b; 笛卡尔积是联合查询的基础&#xff0c;笛卡尔积其实就是一种排列组合&#xff0c;把两张表的记录尽可能地排列组合出n种情况&#xff1a; 以两张表&#xff1a;班级表与学生表为例&#xff0c;计…...

InnoDB存储引擎对MVCC的实现

MVCC MVCC的目的 在搞清楚MVCC之前,我们要搞懂一个问题,MVCC到底解决的是什么问题? 我用一句话概括,那就是为了解决读-写可以一起的问题! 在我们的印象里,InnoDB可以读读并发,不能读写并发,或者写写并发 这是很正常的想法,因为如果读写并发的化,会有并发问题 而对于写写…...

DeepSeek模型版本选择终极决策树(2024Q3权威更新):输入你的GPU型号/任务类型/预算,3步锁定最优解

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek模型版本选择终极决策树&#xff08;2024Q3权威更新&#xff09;&#xff1a;输入你的GPU型号/任务类型/预算&#xff0c;3步锁定最优解 选择适配的 DeepSeek 模型版本是高效落地大模型应用的关键前提…...

喜马拉雅xm-sign v3算法逆向解析与Node.js本地生成

1. 这不是“爬虫教程”&#xff0c;而是一次对前端签名机制的解剖式复现你有没有遇到过这样的情况&#xff1a;抓包看到喜马拉雅App或网页端发起的请求里&#xff0c;总带着一个叫xm-sign的参数&#xff0c;长度固定32位&#xff0c;每次请求都变&#xff0c;但又不是纯随机——…...

2026校招人才整体素质洞察

导读&#xff1a;这份《2026 校招人才素质洞察报告》由前程无忧发布&#xff0c;围绕 AI 时代校招变局&#xff0c;依托 800 万 测评数据&#xff0c;系统剖析应届毕业生的素质特征&#xff0c;提出人才筛选新坐标&#xff0c;为企业校招提供战略方向与实操参考。关注公众号&a…...

紧急通告:Gemini当前版本对非RGB图像(CMYK/灰度/16bit TIFF)存在系统性解析缺陷!已确认影响金融票据识别与工业质检部署,补丁预计Q3上线

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Gemini图片理解能力测试 Gemini 模型在多模态理解方面展现出显著的图像解析能力&#xff0c;尤其在细粒度视觉推理、文字识别&#xff08;OCR&#xff09;、场景语义理解及跨模态对齐任务中表现突出。为系统评…...

终极鸣潮自动化工具:5个技巧让你的游戏时间效率提升500%

终极鸣潮自动化工具&#xff1a;5个技巧让你的游戏时间效率提升500% 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否曾经为《…...

Node.js 项目如何集成 Taotoken 实现稳定的大模型调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Node.js 项目如何集成 Taotoken 实现稳定的大模型调用 对于 Node.js 后端服务开发者而言&#xff0c;在项目中引入大模型能力正变得…...

Warcraft Helper终极指南:8大功能让魔兽争霸3在现代系统重获新生

Warcraft Helper终极指南&#xff1a;8大功能让魔兽争霸3在现代系统重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Window…...

漫画阅读新体验:JHenTai如何让你在五大平台无缝畅读E-Hentai内容?

漫画阅读新体验&#xff1a;JHenTai如何让你在五大平台无缝畅读E-Hentai内容&#xff1f; 【免费下载链接】JHenTai A cross-platform manga app made for e-hentai & exhentai by Flutter 项目地址: https://gitcode.com/gh_mirrors/jh/JHenTai 还在为在不同设备上…...

突破下载瓶颈:百度网盘Mac版SVIP加速完全指南

突破下载瓶颈&#xff1a;百度网盘Mac版SVIP加速完全指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否曾因百度网盘Mac版的龟速下载而焦躁&am…...

MeritOpt:动态权重聚合算法在低资源NLP任务中的应用与实现

1. 项目概述与核心挑战在自然语言处理领域&#xff0c;低资源语言任务一直是个棘手的问题。想象一下&#xff0c;你手头只有几千条某个小语种的翻译对&#xff0c;却要训练一个能流畅翻译的模型&#xff0c;这就像试图用几块砖头盖起一栋大楼。传统的做法要么是“闭门造车”&am…...