![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go大法
文章平均质量分 87
MClink
最不像程序员的程序员
展开
-
GO并发编程基础- 如何使用channel
通道,顾名思义,使用来传递数据信号的,和队列类似,有发送端和接收端,也是先进先出的数据结构,通常是在不同的goroutine做通信处理,结合select,是GO并发编程中的武功秘籍。原创 2022-07-19 21:34:49 · 347 阅读 · 1 评论 -
一文让你理解GO的数组和切片的本质
Go 的数组,其实和C的数组没有什么区别,同样有着以下的特点:上面是一个长度为9的整形数组。在内存是连续的存储空间。在我们定义一个数组之后,其中所有的元素值都会是该类型的零值。因此我们无法判定我们存的就是零值还是初始化给的零值,但其实这并不重要。使用数组的好处和坏处都显而易见。数组可以节省空间,不像链表和其他数据结构,需要额外存储其他的标识。而且他很简单,作为基础数据结构之一,他简单而朴实无华,在一些指定的场景中,发挥着很大的作用。指定下标 访问元素 O(1) 的时间复杂度,又让他很快。但是人不完人,原创 2022-07-03 15:41:13 · 359 阅读 · 0 评论 -
详解 Go之面向对象
面向对象的三大特点是:封装、继承、多态,那么Go是面向对象的语言吗?原创 2022-03-10 23:37:09 · 4825 阅读 · 4 评论 -
Go命令行实现工具- flag大法详解
一、flag 是什么东西?对于很多语言,都支持用命令行执行。例如 PHP 支持用PHP命令 解析PHP脚本语言,Java 支持用 Java命令编译 Java代码,golang 也支持用 go 命令编译执行。既然都支持用命令行执行,但是命令行又不像web 页面那样有输入框给我们填充参数,那么怎么让程序可以读取我们输入的值呢?为了解决这样的问题,golang 为此提供了 flag 标准库。它的主要功能是实现命令行参数的解析。二、flag 入门?我们简单举一个简单的例子:package main原创 2021-12-04 21:55:23 · 1966 阅读 · 0 评论 -
GO并发编程入门-协程和锁
一、使用协程go 的协程使用上十分的简单,只需要在方法前添加 go 关键字,就可以开启一个新的用户态线程去异步执行。package mainimport ( "fmt" "time")func main() { go doSomething("mclink") doSomething("study")}func doSomething(str string) { for i:=0 ;i < 5 ; i++ { time.Sleep(time.Second) fmt原创 2021-06-07 00:03:31 · 1506 阅读 · 1 评论 -
浅谈GO语言包管理
一、包管理的作用不论是哪种语言,都会有很多大佬写的框架以及工具包,我们为了可以增加代码跨项目的可复用性,经常会把一些常用的功能或者轮子写成一个或者多个包,因为包的独立性,使得我们可以在不同的项目或仓库对它进行使用,间接提高了代码的可复用性,减少了 CP 的场景。不同语言对包的概念界限不同,但是他们的本质是相同的,都是为了提供一些便于开发使用的工具方法或者轮子。本质就是一个文件夹的代码,当然包可以用来区分相同名字的函数、变量等标识符等。二、如何进行包管理1. GOPATH 模式Go 的包管理方式是逐原创 2021-05-25 23:10:43 · 477 阅读 · 0 评论 -
浅谈 GO 语言错误处理
go 的异常处理一直都是一种让人感觉奇怪的设计,本文用较多的篇幅和大家一起聊聊go 的异常处理的一些姿势一、error 是什么玩意话不多说 ,先放下源码(也就几行)package builtin// The error built-in interface type is the conventional interface for// representing an error condition, with the nil value representing no error.typ.原创 2021-04-18 17:12:04 · 562 阅读 · 0 评论 -
gorm 如何实现支持任意原生SQL查询
目标:实现一个通用查询。传入任意的原生SQL,使其能基于 gorm 上获取结果一、gorm 能否直接实现?首先,我们分析一下,首先要支持任意原生SQL,然后返回结果无法确定结构体。很多人说,gorm 本身支持原生SQL查询啊。是的没错,但是实现上却有一定的限制,通过阅读文档,发现以下两种查询方式:// 第一种type Result struct { ID int Name string Age int}var result Resultdb.Raw("SELECT i.原创 2021-03-27 21:28:54 · 4795 阅读 · 3 评论 -
GO进阶之类型篇
数据类型是语言的基础,对于强类型的语言来说,正确使用类型也是一个基本功,不可轻视。一、Go 的类型有哪些?Go语言内置以下这些基础类型:布尔类型: bool。整型: int8、 byte、 int16、 int、 uint、 uintptr等。浮点类型: float32 、 float64。复数类型: complex64、 complex128。字符串: string。字符类型: rune。错误类型: error。同时, Go语言也支持以下这些复合类型:指针( pointer.原创 2021-03-02 23:12:29 · 556 阅读 · 0 评论 -
GO语言的三种RPC使用方式
本文栗子,服务端实现对字符串的md5加密。客户端传递字符串通过rpc方式调用服务端,获得 md5 加密后的密文。 共通过三种方式实现,(1)go 语言 原生 RPC方式 (2) go语言原生 RPC + protobuff 实现 (3) GRPC 框架实现1.go原生 rpc#server.gopackage mainimport ( "crypto/md5" "encoding/hex" "net" "net/http" "net/rpc")// 加密工具类type Enc.原创 2021-01-24 21:24:08 · 4464 阅读 · 1 评论 -
GO语言基础必知必会
博主学习时总结的一些基础知识点。拿捏!1. 应用程序入口必须是 main 包: package main必须是 main 方法: func main()文件名不一定是 main.go2. 命令行参数接收使用 os 包下面的 os.Args 参数且下标从 1 开始3.编写测试程序文件包名为 xxx_test文件名为 xxx_test.go方法名为首字符大写 Test 开头,且形参为 t *testing.T4.变量命名和赋值 一个名字必须以一个字.原创 2021-01-24 10:33:17 · 256 阅读 · 0 评论 -
Go之数据库操作
1.MySQL 驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的 实现接口,常用的有如下几种:https://github.com/go-sql-driver/mysql 支持database/sql,全部采用go写。https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写。https://github.com/Philio/GoMySQL 不支持datab原创 2020-12-31 19:37:07 · 737 阅读 · 1 评论