随笔分类 -  golang

摘要:看一段代码 func main() { a := make([]int, 0, 5) fmt.Printf("%v:%p, len(a) = %d\n", a, &a, len(a)) a = append(a, 1) fmt.Printf("%v:%p, len(a) = %d\n", a, &a 阅读全文
posted @ 2022-09-26 09:54 专职 阅读(81) 评论(0) 推荐(0) 编辑
摘要:// 方法1:使用go中标准库里的json编码成[]byte,然后再解码到map里 //data, _ := json.Marshal(&User) //m := make(map[string]any) //json.Unmarshal(data, &m) // Struct2map 方法2:通过 阅读全文
posted @ 2022-09-02 13:56 专职 阅读(2713) 评论(0) 推荐(0) 编辑
摘要:go语言数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在go语言中很少直接使用数组。 在数组的定义中,如果在数组长度的位置出现“…”省略号,则表示数组的长度是根据初始化值的个数来计算: func main() { a := [... 阅读全文
posted @ 2022-09-01 14:16 专职 阅读(243) 评论(0) 推荐(0) 编辑
摘要:go语言分支结构 if特殊写法: if err := Connect(); err != nil { fmt.Println(err) return } Connect 是一个带有返回值的函数,err:=Connect() 是一个语句,执行 Connect 后,将错误保存到 err 变量中。 err 阅读全文
posted @ 2022-08-31 16:52 专职 阅读(41) 评论(0) 推荐(0) 编辑
摘要:go语言defer(延迟执行语句) 会用延迟执行语句在函数退出时释放资源 处理业务或逻辑中涉及成对的操作是一件比较烦琐的事情,比如打开和关闭文件、接收请求和回复请求、加锁和解锁等。在这些操作中,最容易忽略的就是在每个函数退出处正确地释放和关闭资源。 defer 语句正好是在函数退出时执行的语句,所以 阅读全文
posted @ 2022-08-31 15:08 专职 阅读(74) 评论(0) 推荐(0) 编辑
摘要:go语言函数声明 每一次函数在调用时都必须按照声明顺序为所有参数提供实参(参数值),在函数调用时,Go语言没有默认参数值,也没有任何方法可以通过参数名指定形参,因此形参和返回值的变量名对于函数调用者而言没有意义。 在函数中,实参通过值传递的方式进行传递,因此函数的形参是实参的拷贝,对形参进行修改不会 阅读全文
posted @ 2022-08-31 10:48 专职 阅读(79) 评论(0) 推荐(0) 编辑
摘要:go语言结构体定义 go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由一个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体的成员也可以称为字段,每个字段有如下属性: 字段名必须唯一 字段拥有自己的类型和值 字段的类型也可以是结构体,甚至是字 阅读全文
posted @ 2022-08-30 15:42 专职 阅读(1726) 评论(0) 推荐(0) 编辑
摘要:概念 在Go语言中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。在实际开发过程中,无论是实现 web 应用程序,还是控制台输入输出,又或者是网络操作,都不可避免的会遇到 I/O 操作。 Go语言标准库的 bufio 包中,实现了对数据 I/O 接口的缓冲功能。这些功能封装于 阅读全文
posted @ 2022-08-30 10:49 专职 阅读(114) 评论(0) 推荐(0) 编辑
摘要:go语言实现接口的条件 如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。 实现关系在Go语言中是隐式的。两个类型之间的实现关系不需要在代码中显式地表示出来。Go语言中没有类似于 implements 的关 阅读全文
posted @ 2022-08-30 08:04 专职 阅读(527) 评论(0) 推荐(0) 编辑
摘要:go语言zip归档文件的读写操作 Go语言的标准库提供了对几种压缩格式的支持,其中包括 gzip,因此 Go 程序可以无缝地读写 .gz 扩展名的 gzip 压缩文件或非 .gz 扩展名的非压缩文件。此外标准库也提供了读和写 .zip 文件、tar 包文件(.tar 和 .tar.gz),以及读 . 阅读全文
posted @ 2022-08-29 11:29 专职 阅读(174) 评论(0) 推荐(0) 编辑
摘要:go语言json文件的读写操作 JSON 是一种使用 UTF-8 编码的纯文本格式,采用完全独立于语言的文本格式,由于写起来比 XML 格式方便,并且更为紧凑,同时所需的处理时间也更少,致使 JSON 格式越来越流行,特别是在通过网络连接传送数据方面。 开发人员可以使用 JSON 传输简单的字符串、 阅读全文
posted @ 2022-08-29 08:55 专职 阅读(108) 评论(0) 推荐(0) 编辑
摘要:Go语言os包用法简述 Go语言的 os包中提供了操作系统函数的接口,是一个比较重要的包。顾名思义,os 包的作用主要是在服务器上进行系统的基本操作,如文件操作、目录操作、执行命令、信号与中断、进程、系统状态等等。 os包中的常用函数 Hostname Hostname函数会返回内核提供的主机名 f 阅读全文
posted @ 2022-08-26 14:30 专职 阅读(64) 评论(0) 推荐(0) 编辑
摘要:go语言big包 实际开发中,对于超出 int64 或者 uint64 类型的大数进行计算时,如果对精度没有要求,使用 float32 或者 float64 就可以胜任,但如果对精度有严格要求的时候,我们就不能使用浮点数了,因为浮点数在内存中只能被近似的表示。 Go语言中 math/big 包实现了 阅读全文
posted @ 2022-08-25 16:31 专职 阅读(74) 评论(0) 推荐(0) 编辑
摘要:包的基本概念 Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。 包可以定义在很深的目录中,包名的定义是不包括目录路径的,但是包在引用时一般使用全路径引用。比如在GOPATH 阅读全文
posted @ 2022-08-24 16:54 专职 阅读(66) 评论(0) 推荐(0) 编辑
摘要:go语言多核并行化 Go语言具有支持高并发的特性,可以很方便地实现多线程运算,充分利用多核心 cpu 的性能。 众所周知服务器的处理器大都是单核频率较低而核心数较多,对于支持高并发的程序语言,可以充分利用服务器的多核优势,从而降低单核压力,减少性能浪费。 go语言实现多核多线程并发运行是非常方便的, 阅读全文
posted @ 2022-08-23 16:50 专职 阅读(156) 评论(0) 推荐(0) 编辑
摘要:go语言通道channel 如果说 goroutine 是 Go语言程序的并发体的话,那么 channels 就是它们之间的通信机制。一个 channels 是一个通信机制,它可以让一个 goroutine 通过它给另一个 goroutine 发送值信息。每个 channel 都有一个特殊的类型,也 阅读全文
posted @ 2022-08-23 08:56 专职 阅读(67) 评论(0) 推荐(0) 编辑
摘要:并发概念 并发意味着程序在运行时有多个执行上下文,对应着有多个调用栈,我们知道每一个进程在运行时都有自己的调用栈和堆,有一个完整的上下文,而操作系统在调度进程的时候,会保存调度进程的上下文环境,等该进程获取到时间片后,在恢复该进程的上下文到系统中。 go语言轻量级线程 使用go关键字创建gorout 阅读全文
posted @ 2022-08-16 15:39 专职 阅读(48) 评论(0) 推荐(0) 编辑
摘要:方案1:使用ServeMux package main import ( "fmt" "net" "net/http" "regexp" ) // http请求的路由,多路复用器 var serveMux = new(http.ServeMux) func main() { // 所有请求都走此匹配 阅读全文
posted @ 2022-05-10 14:32 专职 阅读(556) 评论(0) 推荐(0) 编辑
摘要:下载 cd /opt/soft sudo wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz 解压 sudo tar -xzvf go1.18.1.linux-amd64.tar.gz 进入解压后的go目录 cd go 创建GOPATH目录 mkdi 阅读全文
posted @ 2022-05-03 08:20 专职 阅读(629) 评论(0) 推荐(0) 编辑
摘要:设置GOPROXY代理为阿里云 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ powershell指定 $env:GOPROXY = "https://mirrors.aliyun.com/goproxy/" 设置GOPROXY代理商为七 阅读全文
posted @ 2022-05-02 09:40 专职 阅读(3032) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示