易购商城app,英文网站seo发展前景,wordpress邀请有奖,框架型网站Golang方向 区块链 go服务器端 (后台流量支撑程序)
支撑主站后台流量#xff08;排序#xff0c;推荐#xff0c;搜索等#xff09;#xff0c;提供负载均衡#xff0c;cache#xff0c;容错#xff0c;按条件分流#xff0c;统计运行指标 (qps#xff0c; latenc…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 fmtfunc main() {fmt.Println(Hello, world!)
}
执行文件 go run hello.go
或者先
go build hello.go再 ./hello如果要指定文件名
go build -o myhello.exe hello.goGolang执行流程
如果是对源码编译后再执行Go的执行流程如下图 如果我们是对源码直接执行 go run 源码Go 的执行流程如下图
在VScode编写项目
配置go.mod
要在你创建的project下通过
go mod init 项目名生成一个go.mod配置 用于管理模块依赖关系的文件
模块路径Module Pathgo.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 (logfmt //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 hello1var str2 world2fmt.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