Golang 语言学习 01 包含如何快速学习一门新语言
Golang方向
-
区块链
-
go服务器端 (后台流量支撑程序)
支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标 (qps, latency 中)等功能
-
游戏软件(数据平台)
-
golang分布式/云计算/云服务
如何快速深入学习新技术 or 知识点
我们有一个需求
- 项目开发时,我们需要解决某个问题
- 跳槽,学习新技术
先看现有技术是否可以解决
传统方法可以,但不够好
使用新技术 ajax
解决快速入门问题
1. 学习基本原理 和 基本语法
快速入门案例
案例要求:1. 简单2. 了解新技术 or 知识点的 基本适用3. 不涉及 技术细节
讨论新技术/知识点 的细节(这里非常考察程序员的水平)
1. 怎么使用规范
2. 使用陷阱
3. 使用时,需要注意什么
小节
编程通识基本概念
什么是程序
完成某个功能指令的集合。
编写源代码
Write source code
源代码编译 得到 二进制可移植性文件
Compile source code to obtain binary portability files
类比 理解
什么是指令
程序是 一系列 有序 指令的集合。
Go语言发展史
核心开发人员
Ken Thompson: C语言 和 B语言 发明人
Rob Pike: Unix团队成员, BEll Labs
Rovert Griesemer: Java的HotSpot编辑器,Chrome浏览JS
长处
可以合理利用多核多CPU
风格统一
计算能力增强
处理大并发
C/C++ 运行快,但是编译慢,而且内存泄露
时间
2007开始
2009 开源
2015 1.5版本
2018 Go 1.10
Go特点
Go = C + Python
继承 C, 存在 参数调用 和 指针
- 指针
func testPtr(num *int) {*num =20
}
- 包的概念
Go 语言的—个文件都要归属于—个包,而不能单独存在。
-
垃圾回收机制
内存自动回收 -
天然并发
goruitine 轻量级线程, 实现 大并发处理
局域CPS并发模型 Communicating Sequential Processes实现 -
管道通信机制
channel 实现 goroute 之间相互通信 -
函数返回多值
-
切边slice 和 延时执行defer
编辑器
VS code
Sublime Text
Vim
Emacs
环境搭建 + 安装SDK(Mac)
bashrc配置环境变量路径
我用的是bash
所以打开根目录下的bashrc添加go的路径就好了
下面只是一个例子,具体的路径,需要你在自己电脑上找
source 一下bashrc
检查是否安装成功
go version
简单程序入门
开发一个hello.go 程序
开发步骤
目录结构
写程序
package mainimport "fmt"func main() {fmt.Println("Hello, world!")
}
执行文件
go run hello.go
或者先
go build hello.go
再
./hello
如果要指定文件名
go build -o myhello.exe hello.go
Golang执行流程
如果是对源码编译后,再执行,Go的执行流程如下图
如果我们是对源码直接执行 go run 源码,Go 的执行流程如下图
在VScode编写项目
配置go.mod
要在你创建的project下,通过
go mod init 项目名
生成一个go.mod配置
用于管理模块依赖关系的文件
模块路径(Module Path):go.mod 文件中包含了当前项目的模块路径,模块路径是项目在代码仓库中的唯一标识符,通常以域名逆序形式(例如 github.com/user/project)。
依赖项管理:go.mod 文件列出了项目所依赖的其他模块以及它们的版本信息。这些依赖项通常包括项目引用的外部库。Go 模块系统会确保依赖项的版本不会与其他依赖项冲突,以确保构建稳定的代码。
版本信息:对于每个依赖项,go.mod 文件记录了所使用的版本号或版本范围,以确保项目在不同的构建之间具有一致的依赖关系。
自动依赖管理:Go 模块系统允许开发者引入新的依赖项,同时自动更新 go.mod 文件,以确保依赖项版本的一致性。
改成下面可以通过vscode看到输出结果
package main// import "fmt" //fmt包中提供格式化,输出,输入的函数。import ("log"
)func main() {// fmt.Println("Hello, world!")log.Println("Hello world!")log.Println("tom\tjack")
}
转义字符
\t 制表符
\n 换行符
\r 回车
改进,并增加 测试 两个输出的
package mainimport ("log""fmt" //fmt包中提供格式化,输出,输入的函数。
)func getVal(num1 int, num2 int) (int, int) {sum := num1 + num2sub := num1 - num2return sum, sub
}func main() {// fmt.Println("Hello, world!")log.Println("Hello world!")log.Println("tom\tjack")// log.Println("天龙八部\r张飞")fmt.Println("天龙八部\r张飞")// a, b := getVal(1, 2)a, b := getVal(1, 2)fmt.Println("Sum:", a)fmt.Println("Subtraction:", b)var str1 = "hello1"var str2 = "world2"fmt.Println(str1 + str2)}
常见问题
文件名 和 路径问题
The system cannot find the file specified.
官网Doc
https://go.dev/learn/
https://go.dev/tour/welcome/1
中文文档
https://studygolang.com/pkgdoc
API
application program interface
包的应用的各个接口
数据类型
data type
基本数据类
整数类型
int
int8 (1个字节)
int16 (2个字节)
int32 (4个字节)
int64 (8个字节)
有符号
推导
第一位用来表示符号位
其余用来表示数值大小
所以 int8
是 -2的7次方 到 2 七次方-1
无符号
int其他类型
浮点类型
float32
float64
字符型
没有,用bye 保存单个字符
布尔型
bool
字符串
string
byte unit8的别名
rune int32的别名
派生/复杂数据类型
指针pointer
数组
结构体 struct
管道channel (多并发)
函数
切片 slice
接口 interface
map
相关文章:

Golang 语言学习 01 包含如何快速学习一门新语言
Golang方向 区块链 go服务器端 (后台流量支撑程序) 支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标 (qps, latenc…...
整理了197个经典SOTA模型,涵盖图像分类、目标检测、推荐系统等13个方向
今天来帮大家回顾一下计算机视觉、自然语言处理等热门研究领域的197个经典SOTA模型,涵盖了图像分类、图像生成、文本分类、强化学习、目标检测、推荐系统、语音识别等13个细分方向。建议大家收藏了慢慢看,下一篇顶会的idea这就来了~ 由于整理的SOTA模型…...

10.4 小任务
目录 QT实现TCP服务器客户端搭建的代码,现象 TCP服务器 .h文件 .cpp文件 现象 TCP客户端 .h文件 .cpp文件 现象 QT实现TCP服务器客户端搭建的代码,现象 TCP服务器 .h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #includ…...

AJAX--Express速成
一、基本概念 1、AJAX(Asynchronous JavaScript And XML),即为异步的JavaScript 和 XML。 2、异步的JavaScript 它可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面。浏览器可以做自己的事情。直到成功获取响应后…...
开题报告 PPT 应该怎么做
开题报告 PPT 应该怎么做 1、报告时首先汇报自己的姓名、单位、专业和导师。 2、研究背景(2-3张幻灯片) 简要阐明所选题目的研究目的及意义。 研究的目的,即研究应达到的目标,通过研究的背景加以说明(即你为什么要…...

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用
文章目录 一:函数的简介 1:概念和简介 2:创建一个函数对象 3:调用函数对象 4:函数对象的普通功能 5:使用函数声明来创建一个函数对象 6:使用函数声明创建一个匿名函数 一:函…...
当我们做后仿时我们究竟在仿些什么(三)
异步电路之间必须消除毛刺 之前提到过,数字电路后仿的一个主要目的就是动态验证异步电路时序。异步电路的时序是目前STA工具无法覆盖的。 例如异步复位的release是同步事件,其时序是可以靠STA保证的;但是reset是异步事件,它的时序…...

如何将超大文件压缩到最小
1、一个文件目录,查看属性发现这个文件达到了2.50GB; 2、右键此目录选择添加到压缩文件; 3、在弹出的窗口中将压缩文件格式选择为RAR4,压缩方式选择为最好,选择字典大小最大,勾选压缩选项中的创建固实压缩&…...
[C#]C#最简单方法获取GPU显存真实大小
你是否用下面代码获取GPU显存容量? using System.Management; private void getGpuMem() {ManagementClass c new ManagementClass("Win32_VideoController");foreach (ManagementObject o in c.GetInstances()){string gpuTotalMem String.For…...

【数据结构】红黑树(C++实现)
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:数据结构 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【数据…...
day-64 代码随想录算法训练营(19)图论 part 03
827.最大人工岛 思路一:深度优先遍历 1.深度优先遍历,求出所有岛屿的面积,并且把每个岛屿记上不同标记2.使用 unordered_map 使用键值对,标记:面积,记录岛屿面积3.遍历所有海面,然后进行一次广…...
xss测试步骤总结
文章目录 测试流程1.开启burp2.测试常规xss语句3.观察回显4.测试闭合与绕过Level2Level3Level4Level5Level6Level7 5.xss绕过方法1)测试需观察点2)无过滤法3)">闭合4)单引号闭合事件函数5)双引号闭合事件函数6)引号闭合链接7)大小写绕过8)多写绕过9)unicode编码10)unic…...

2023最新简易ChatGPT3.5小程序全开源源码+全新UI首发+实测可用可二开(带部署教程)
源码简介: 2023最新简易ChatGPT3.5小程序全开源源码全新UI首发,实测可以用,而且可以二次开发。这个是最新ChatGPT智能AI机器人微信小程序源码,同时也带部署教程。 这个全新版本的小界面设计相当漂亮,简单大方&#x…...

【Redis】数据过期策略和数据淘汰策略
数据过期策略和淘汰策略 过期策略 Redis所有的数据结构都可以设置过期时间,时间一到,就会自动删除。 问题:大家都知道,Redis是单线程的,如果同一时间太多key过期,Redis删除的时间也会占用线程的处理时间…...
RPA的优势和劣势是什么,RPA能力边界在哪里?
RPA,即Robotic Process Automation(机器人流程自动化),是一种新型的自动化技术,它可以通过软件机器人模拟人类在计算机上执行的操作,从而实现业务流程的自动化。RPA技术的出现,为企业提高效率、…...

Kubernetes 学习总结(38)—— Kubernetes 与云原生的联系
一、什么是云原生? 伴随着云计算的浪潮,云原生概念也应运而生,而且火得一塌糊涂,大家经常说云原生,却很少有人告诉你到底什么是云原生,云原生可以理解为“云”“原生”,Cloud 可以理解为应用程…...

号卡推广管理系统源码/手机流量卡推广网站源码/PHP源码+带后台版本+分销系统
源码简介: 号卡推广管理系统源码/手机流量卡推广网站源码,基于PHP源码,而且它是带后台版本,分销系统。运用全新UI流量卡官网系统源码有后台带文章。 这个流量卡销售网站源码,PHP流量卡分销系统,它可以支持…...

【C语言】汉诺塔 —— 详解
一、介绍 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大焚天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。 大焚天命令婆罗门把圆盘从下面开始按…...

【云备份】
文章目录 [toc] 1 :peach:云备份的认识:peach:1.1 :apple:功能了解:apple:1.2 :apple:实现目标:apple:1.3 :apple:服务端程序负责功能:apple:1.4 :apple:服务端功能模块划分:apple:1.5 :apple:客户端程序负责功能:apple:1.6 :apple:客户端功能模块划分:apple: 2 :peach:环境搭建…...
第四十六章 命名空间和数据库 - 系统提供的数据库
文章目录 第四十六章 命名空间和数据库 - 系统提供的数据库系统提供的数据库ENSLIBIRISAUDITIRISLIBIRISLOCALDATAIRISSYS (the system manager’s database 系统管理器的数据库)IRISTEMP 第四十六章 命名空间和数据库 - 系统提供的数据库 系统提供的数据库 IRIS 提供以下数据…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...