随笔分类 -  golang

golang学习
摘要:写项目的时候,请求了一个接口,发现返回的json数据,多层嵌套的,而且嵌套的第二层data是数组,第三层的news也是数组 所以需要写多个嵌套json进行解析,使用json.Unmarshal 进行嵌套结构体的解析 json截图为: 代码实例: package main import ( "enco 阅读全文
posted @ 2021-01-28 19:59 pebblecome 阅读(4580) 评论(0) 推荐(0)
摘要:Go 语言中的 select语句用于监控并选择一组case语句执行相应的代码。它看起来类似于switch语句,但是select语句中所有case中的表达式都必须是channel的发送或接收操作。一个典型的select使用示例如下: select { case <-ch1: fmt.Println(" 阅读全文
posted @ 2021-01-28 18:16 pebblecome 阅读(192) 评论(0) 推荐(0)
摘要:写一个统计程序的时候,从表里查询gateway字段因为存在空的情况,所以在定义结构体的时候,设置为sql.NullString类型。 在起一个协程去查询到数据,然后放入到channel中,channel之前定义的是string类型的,所以需要转换一下。 代码实例: package main impo 阅读全文
posted @ 2021-01-28 17:22 pebblecome 阅读(3083) 评论(0) 推荐(0)
摘要:在项目中,经常会使用到字符串拼接,之前开发,直接就是定义一个字符串,然后+ 或者.的方式实现了拼接 下列代码,有三种拼接方式,以及性能测试的截图。 代码实例: package demo6 import ( "bytes" "strconv" "fmt" ) //计算字符串拼接的性能 func Buf 阅读全文
posted @ 2021-01-27 14:39 pebblecome 阅读(89) 评论(0) 推荐(0)
摘要:缓冲的通道实现一个资源池,这个资源池可以管理在任意多个goroutine之间共享的资源,比如网络连接、数据库连接等,我们在数据库操作的时候,比较常见的就是数据连接池,也可以基于我们实现的资源池来实现 资源池实现代码: package demo4 import ( "errors" "io" "log 阅读全文
posted @ 2021-01-25 15:35 pebblecome 阅读(199) 评论(0) 推荐(0)
摘要:代码和注释均在代码: package main import ( "fmt" "runtime" "time" ) // Job type Job interface { Do() } // 一个数据接口,所有的数据都要实现该接口,才能被传递进来 //实现Job接口的一个数据实例,需要实现一个Do( 阅读全文
posted @ 2021-01-25 14:49 pebblecome 阅读(319) 评论(0) 推荐(0)
摘要:实现一个并发求和 我们利用并发的特性将自然数从0-100,分成N组,然后并发求和,最后汇总。 实现逻辑大概如下: 把100个数等份分成N组,构建了10个待计算的任务。 启动M个协程去计算N组数据 等待所有都完成之后,统计最后的结果 代码实例: package main import ( "fmt" 阅读全文
posted @ 2021-01-25 14:48 pebblecome 阅读(448) 评论(0) 推荐(0)
摘要:Go语言内置包之strconv Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。 strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi()、Itia()、parse系列、format系列、append系列。 更多函数请查看官方 阅读全文
posted @ 2021-01-22 18:19 pebblecome 阅读(210) 评论(0) 推荐(0)
摘要:Go标准库Context 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的 阅读全文
posted @ 2021-01-22 18:16 pebblecome 阅读(77) 评论(0) 推荐(0)
摘要:Go语言基础之单元测试 不写测试的开发不是好程序员。 这篇文章主要介绍下在Go语言中如何做单元测试和基准测试。 go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测 阅读全文
posted @ 2021-01-22 17:58 pebblecome 阅读(193) 评论(0) 推荐(0)
摘要:Go语言基础之反射 本文介绍了Go语言反射的意义和基本使用。 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写 阅读全文
posted @ 2021-01-22 17:53 pebblecome 阅读(80) 评论(0) 推荐(0)
摘要:Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种 阅读全文
posted @ 2021-01-22 17:50 pebblecome 阅读(67) 评论(0) 推荐(0)
摘要:Go语言基础之结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用ty 阅读全文
posted @ 2021-01-22 17:47 pebblecome 阅读(117) 评论(0) 推荐(0)
摘要:区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 Go语言中的指针 任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。 比如,“永远不要 阅读全文
posted @ 2021-01-22 17:41 pebblecome 阅读(91) 评论(0) 推荐(0)
摘要:函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。 函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函 阅读全文
posted @ 2021-01-22 17:39 pebblecome 阅读(359) 评论(0) 推荐(0)
摘要:Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map定义 Go语言中 map的定义语法如下: map[KeyType]ValueType 其中, KeyType 阅读全文
posted @ 2021-01-22 17:35 pebblecome 阅读(306) 评论(0) 推荐(0)
摘要:Go语言基础之切片 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } 这个求和函数 阅读全文
posted @ 2021-01-22 17:33 pebblecome 阅读(86) 评论(0) 推荐(0)
摘要:Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法: // 定义一个长度为3元素类型为int的数组a var a [3]int 数组定义: var 数组变量名 [元素数量]T 比如:var a [5]int 阅读全文
posted @ 2021-01-22 17:27 pebblecome 阅读(63) 评论(0) 推荐(0)
摘要:变量 var 变量名 类型 = 表达式 var name string = "Q1mi" var age int = 18 #匿名变量 func foo() (int, string) { return 10, "Q1mi" } func main() { x, _ := foo() _, y := 阅读全文
posted @ 2021-01-22 17:24 pebblecome 阅读(59) 评论(0) 推荐(0)
摘要:目录列表 安装gin框架 go get github.com/gin-gonic/gin 路由包 package routers import ( "github.com/gin-gonic/gin" "lesson26/bubble/controller" ) func SetupRouter() 阅读全文
posted @ 2021-01-22 17:02 pebblecome 阅读(85) 评论(0) 推荐(0)