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 提供以下数据…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
