变量 使用步骤 声明 赋值 引用 package main import "fmt" func main(){ //1.变量的声明 var zl int //2.变量的赋值 zl = 19 //3.变量的使用 fmt.Println("zl = ",zl) //声明和赋值可以合成一句 var fwy int = 24 fmt.Println("fwy = ",fwy) //不可以是不匹配的类型 var num int =11.2 fmt.Println(&…
变量 使用步骤 声明 赋值 引用 package main import "fmt" func main(){ //1.变量的声明 var zl int //2.变量的赋值 zl = 19 //3.变量的使用 fmt.Println("zl = ",zl) //声明和赋值可以合成一句 var fwy int = 24 fmt.Println("fwy = ",fwy) //不可以是不匹配的类型 var num int =11.2 fmt.Println(&…
0.1、索引 https://waterflow.link/articles/1666449874974 1、字符串编码 在go中rune是一个unicode编码点。 我们都知道UTF-8将字符编码为1-4个字节,比如我们常用的汉字,UTF-8编码为3个字节。所以rune也是int32的别名。 type rune = int32 当我们打印一个英文字符hello的时候,我们可以得到s的长度为5,因为英文字母代表1个字节: package main import "fmt" func main()…
在golang中可以使用a := b这种方式将b赋值给a,只有当b能进行深拷贝时a与b才不会互相影响,否则就需要进行更为复杂的深拷贝。 下面就是Go赋值操作的一个说明: Go语言中所有赋值操作都是值传递,如果结构中不含指针,则直接赋值就是深度拷贝;如果结构中含有指针(包括自定义指针,以及切片,map等使用了指针的内置类型),则数据源和拷贝之间对应指针会共同指向同一块内存,这时深度拷贝需要特别处理。目前,有三种方法,一是用gob序列化成字节序列再反序列化生成克隆对象;二是先转换成json字节序列,再解析字节序列生成克…
如何指定靶机的ip地址 awd比赛中,应该每一台靶机占用一个ip地址,但是我们使用docker的情况下,可以使用桥接网络给容器分配ip地址,但是只支持容器之间的一个访问,不能分配容器与宿主机平级的ip地址。 但是我找到了一个方法,就是给宿主机的网卡设置多个ip地址,然后使用host模型,通过端口映射,让容器好像有了自己的ip地址一样。 这么说好像不好理解,其实是这样做 先给网卡添加ip地址 我这里的网卡是名字叫ens33 sudo ip addr add 192.168.154.129/24 dev ens33 然…
已经把《Go 语言并发之道》通读了一遍,非常不错的一本书,对于理解掌握Go语言的并发知识有很大的帮助,接下来我会把书中有用的知识通过代码示例出来,把一些比较好的知识点记录下来。 首先我们来看一段代码 var data int go func() { data++ }() if data == 0 { fmt.Println(" the value is 0.") } else { fmt.Printf(" the value is %v.\n", data) } 这段代码我们…
Go语言上手(一) 这是我参与「第五届青训营 -后端场」笔记创作活动的的第一篇笔记。 先上代码仓库: WenTesla/GoLang-Study: 一个学习Go的仓库 (github.com) 这个仓库下放下我目前学习GO的所有笔记以及代码,还未整理,最后会将仓库进行整理。 基础语法 一:类型 GO的语法类似C和Python,感觉就像缝合怪 定义变量 若要声明变量,需要使用 var 关键字: 单一定义: var firstName string 前一个语句声明 string 类型中的一个名为firstName 的…
今天这篇笔记我们来学习Go 限流 限流是分布式系统中经常需要用到的技术,因为我们让请求没有限制,很容易就出现某个用户开很多线程把我们的服务拉跨,进而影响到别的用户。 限流 我们来看下Go语言层面可以怎么做到限流,先看一段不限流的代码, type APIConnection struct{} func Open() *APIConnection { return &APIConnection{} } func (a *APIConnection) ReadFile(ctx context.Context) e…
安装 go https://go.dev/doc/install 安装以后命令行执行 go version 然后随便创建一个文件, 比如 hello.go package main import "fmt" func main() { fmt.Println("hello world!") } 这就是一个可以直接运行的 go 程序文件了. 运行一下 go run hello.go 是不是很简单? 下面介绍一下怎么引用别人写好的方法. 比如访问 https://pkg.go.d…
Typora软件与Markdown语法 Typora软件的安装 Typora是什么软件: Typora是一款很火的轻量级支持Markdown语法的文本编辑器 Typora下载: mac:https://mac.qdrayst.com/02/Typora_1.1.4_macwk.com.dmg win:破解版安装包(官网是收费的) Typora安装: 1.1.安装路径注意不要放c盘 2.可选择创建桌面快捷方式 什么是文件路径: 路径就是标识文件位置的地址 【绝对路径】:…
两种方式Docker和Docker Compose部署web项目,相对于Go语言来说,不管是使用docker部署还是直接服务器部署都相当方便,比python要简单很多。 两种方式Docker和Docker Compose部署web项目,相对于Go语言来说,不管是使用docker部署还是直接服务器部署都相当方便,比python要简单很多。 1、Dockerfile结构解析 From 我们正在使用基础镜像golang:alpine来创建我们的镜像。这和我们要创建的镜像一样是一个我们能够访问的存储在Docker仓库的基础…