
Go学习篇
小雨喳
while( !success ){ Keep trying; }
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go将外部图片转为base64
//base64 //获取远端图片 res, err := http.Get("www.baidu.com/1.png")//外部图片 if err != nil { return err } defer res.Body.Close() // 读取获取的[]byte数据 data, _ := ioutil.ReadAll(res.Body) req.Image = base64.StdEncoding.EncodeToString(data)...原创 2021-03-30 11:37:11 · 932 阅读 · 0 评论 -
go原生httpServer封装
main.gopackage mainimport ( "log" "test/router")func main() { r := router.NewServer("8080") if err := r.ListenAndServe(); err != nil { log.Fatal(err) }}router/router.gopackage routerimport ( "net/http" "test/controller" "time")func原创 2021-03-26 14:17:27 · 298 阅读 · 0 评论 -
go原生http请求封装
package mainimport ( "bytes" "encoding/json" "errors" "fmt" "io/ioutil" "net/http" "time")func main() { //get // https://test.pet-dbc.cn/api/user/info?name=yuyu params :=map[string]string{ "name":"yuyu", } res,err := httpDo("https://tes原创 2021-03-25 13:59:07 · 1544 阅读 · 0 评论 -
go语言数组、切片、map的内部实现
一、数组内部实现在 Go 语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。数组存储的类型可以是内置类型,如整型或者字符串,也可以是某种结构类型。 下图中可以看到数组的表示。灰色格子代表数组里的元素,每个元素都紧邻另一个元素。 每个元素包含相同的类型,这个例子里是整数,并且每个元素可以用一个唯一的索引(也称下标 或标号)来访问。 数组是一种非常有用的数据结构,因为其占用的内存是连续分配的。由于内存连续,CPU 能把正在使用的数据缓存更久的时间。而且内存连续很容易原创 2020-05-08 17:43:02 · 834 阅读 · 0 评论 -
go语言封装的 mysql详解
go语言封装的 mysqlpackage mainimport( "fmt" "database/sql" _"github.com/go-sql-driver/mysql" "strconv" "time" "strings" "encoding/json")var(...原创 2019-08-02 15:47:38 · 3128 阅读 · 2 评论 -
Go语言中值类型和引用类型区别
Go语言中值类型和引用类型区别一、值类型和引用类型的说明值类型:基本数据类型 int 系列, float 系列, bool, string 、数组和结构体 struct 引用类型:指针、slice 切片、map、管道 chan、interface 等都是引用类型二、值类型和引用类型的使用特点值类型:变量直接存储值,内存通常在栈中分配引用...原创 2019-08-09 15:44:51 · 991 阅读 · 0 评论 -
go语言中goto的使用
go语言中goto的使用一、goto 基本介绍Go 语言的 goto 语句可以无条件地转移到程序中指定的行。 goto 语句通常与条件语句配合使用。可用来实现条件转移,跳出循环体等功能。 在 Go 程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序二、goto 的流程图二、案例...原创 2019-08-09 16:03:29 · 2701 阅读 · 0 评论 -
go语言中包使用的注意事项和细节
go语言中包使用的注意事项和细节在给一个文件打包时,该包对应一个文件夹,比如utils 文件夹对应的包名就是 utils, 文件的包名通常和文件所在的文件夹名一致,一般为小写字母。 当一个文件要使用其它包函数或变量时,需要先引入对应的包。 为了让其它包的文件,可以访问到本包的函数,则该函数名的首字母需要大写,类似其它语言的 publi...原创 2019-08-09 16:10:07 · 297 阅读 · 0 评论 -
go语言中函数使用的注意事项和细节
go语言中函数使用的注意事项和细节函数的形参列表可以是多个,返回值列表也可以是多。 形参列表和返回值列表的数据类型可以是值类型和引用。 函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写该函数可以被本包文件和其它包文件使用,类似 public , 首字母小写,只能被本包文件使用,其它包文件不能使用,类似 priva...原创 2019-08-09 16:31:57 · 247 阅读 · 0 评论 -
go语言中defer函数
go语言中defer函数一、为什么需要 defer函数在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在函数执行完毕后,及时的释放资源,Go 的设计者提供 defer (延时机制)。二、快速入门案例三、defer 的注意事项和细节1) 在 golang 编程中的通常做法是,创建资源后,比如(打开了文件,获...原创 2019-08-09 16:42:58 · 656 阅读 · 0 评论 -
go语言中字符串常用的系统函数
go语言中字符串常用的系统函数统计字符串的长度,按字节 len(str)字符串遍历,同时处理有中文的问题 r := []rune(str)整数转字符串 str = strconv.Itoa(12345)字符串 转 []byte: var bytes = []byte("hello go")[]byte 转 字符串:...原创 2019-08-09 16:52:42 · 376 阅读 · 0 评论 -
go语言中内置函数
go语言中内置函数一、说明Golang 设计者为了编程方便,提供了一些函数,这些函数可以直接使用,我们称为 Go 的内置函数。二、举例len:用来求长度,比如 string、array、slice、map、channel new:用来分配内存,主要用来分配值类型,比如 int、float32,struct......原创 2019-08-09 16:58:01 · 519 阅读 · 0 评论 -
go语言中错误处理
go语言中错误处理一、基本说明Go 语言追求简洁优雅,所以,Go 语言不支持传统的 try…catch…finally 这种处理。 Go 中引入的处理方式为:defer, panic, recover 这几个异常的使用场景可以这么简单描述:Go 中可以抛出一个 panic 的异常,然后在 defer 中通过 recover...原创 2019-08-09 17:06:43 · 3918 阅读 · 2 评论 -
go语言中string 和 slice讲解
go语言中string 和 slice讲解 string 底层是一个 byte 数组,因此 string 也可以进行切片处理 案例演 string 和切片在内存的形式,以 "abcd" 画出内存示意图 string 是不可变的,也就说不能通过 str[0] = 'z' 方式来修改字符串 如果需要修改字符串,可以先...原创 2019-08-09 17:20:54 · 1967 阅读 · 0 评论 -
go语言语法练习实例
go语言语法练习实例package mainimport( "fmt")//定义grandpa结构体type grandpa struct{ g_name string g_age int}//定义parents结构体type parents struct{ g grandpa//继承grand...原创 2019-08-10 15:08:20 · 844 阅读 · 0 评论 -
go语言的testing使用详解
go语言的testing使用详解一、注意细节每一个包名使用 xxx_test.go命名 每一个测试用例使用 TestXxx命名 测试用例传参要用 t *testing.T 或者t *testing.B t.Errorf 是打印错误信息,并且当前测试用例会被跳过 t.SkipNow 跳过当前test,并且直接按pas...原创 2019-08-12 09:02:54 · 3526 阅读 · 0 评论 -
go语言json嵌套数组结构体用法
go语言json嵌套数组结构体用法一、转换思路一个json对象就是一个结构体 一个json数组就是一个切片 json数组放json对象就是切片里面放结构体二、实例package mainimport( "encoding/json" "fmt")type Order struct{ OrderId str...原创 2019-08-15 23:08:36 · 10793 阅读 · 0 评论 -
go语言json嵌套数组Map用法
go语言json嵌套数组Map用法一、转换思路 一个json对象就是一个map 一个json数组就是一个切片 json数组放对象就是相当于切片里面放map二、实例package mainimport( "encoding/json" "fmt")func main(){ var Order...原创 2019-08-16 10:34:25 · 5530 阅读 · 0 评论 -
go语言协程和线程区别
go语言协程和线程区别一、线程和协程区别主线程是一个物理线程,直接作用在 cpu 上的。是重量级的,非常耗费 cpu 资源。 Go 主线程(/也可以理解成进程)一个 Go 线程上,可以起多个协程。 协程从主线程开启的,是轻量级的线程,是逻辑态。对资源消耗相对小。 Golang 的协程机制是重要的特点,可以轻松的开...原创 2019-08-17 21:57:54 · 1952 阅读 · 0 评论 -
go语言互斥锁总结
go语言互斥锁总结 由于多个协程之间不能同时操作同一块内存空间,解决办法就可以用到互斥锁。 使用实例 package mainimport ( "fmt" "time" "sync")// 需求:现在要计算 1-200 的各个数的阶乘,并且把各个数的阶乘放入到 map 中。// 最后显示出来。要求使用 g...原创 2019-08-17 22:33:29 · 1047 阅读 · 1 评论 -
go语言管道总结
go语言管道总结一、channel 的基本介绍channle 本质就是一个数据结构-队列 数据是先进先出【FIFO : first in first out】 线程安全,多 goroutine 访问时,不需要加锁,就是说 channel 本身就是线程安全的 channel 有类型的,一个 string 的 ch...原创 2019-08-18 12:11:32 · 2367 阅读 · 0 评论 -
golang中的三个点 '...' 的用法
golang中的三个点 '...' 的用法一、作用它的第一个用法主要是用于函数有多个不定参数的情况,可以接受多个不确定数量的参数。 第二个用法是slice可以被打散进行传递。 接收参数:args ...type 传递参数:args...二、实例package mainimport ( "fmt")func main(...原创 2019-09-05 22:39:15 · 1964 阅读 · 0 评论 -
go语言fasthttp使用实例
一、服务搭建和接收参数实例package mainimport ( "fmt" "github.com/buaazp/fasthttprouter" "github.com/valyala/fasthttp")// index 页func Index(ctx *fasthttp.RequestCtx) { ctx.Request.Header.Pe...原创 2019-10-23 21:44:25 · 7980 阅读 · 2 评论 -
golang指针讲解
定义指针,就是保存对象的内存地址。用指针的好处就是节约内存空间。 定义一个指针类型的变量很简单,就是在变量名前加*//基础类型指针var ps *stringvar pi *intvar pf *float64var pb *bool//结构体指针type Person struct { name string age int}var pperson...原创 2019-12-06 10:48:44 · 367 阅读 · 0 评论 -
go 协程实战总结
1、使用 go 函数启动协程2、主线程退出时,所有没有执行完的协程也会终止(引发问题)3、多个协程不能同时操作一块内存,会报错 (引发问题)4、使用锁机制控制多个协程操作同一块内存,在写内存时开启锁,写完时关闭锁。类似上上厕所(解决3问题 不推荐使用)5、使用管道控制多个协程操作同一块内存,管道就是一个队列,先进先出。(解决3问题 推荐使用) 1.管道申请 var intC...原创 2020-03-15 10:40:58 · 447 阅读 · 0 评论