
Golang
学习开发过程中遇到的问题总结
小镇程序员
Php And Golang Coder
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
gin框架总结_日志打印
1、gin框架不用每次执行run命令的方法。2) 再运行fresh即可。原创 2025-01-20 18:27:47 · 131 阅读 · 0 评论 -
Go项目经验 关于依赖更新问题
如果本地项目有新的依赖更新,不需要提交github里的代码,只需要提交go.mod就可以了,线上代码在编译的时候就有自动更新新的依赖原创 2020-09-14 09:48:23 · 1592 阅读 · 0 评论 -
golang 基础面试题
Golang精编100题能力模型 级别 模型 初级 primary 熟悉基本语法,能够看懂代码的意图; 在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范; 中级 intermediate 能够独立完成用户故事的开发和测试; 能够嗅出代码的坏味道,并知道如何重构达成目标; 高级 senior 能够原创 2022-04-30 10:22:15 · 1008 阅读 · 0 评论 -
解决go的瓶颈的
解决go的瓶颈的https://github.com/heiyeluren/XMM原创 2022-02-17 11:44:55 · 260 阅读 · 0 评论 -
协程快在哪儿
协程快在哪? 减少IO阻塞导致的性能损失大家可能听到使用协程的最多的理由, 可能就是 协程快. 那看起来和平时写得差不多的代码, 为什么就要快一些呢? 一个常见的理由是, 可以创建很多个协程来执行任务, 所以快. 这种说法是对的, 不过还停留在表面.首先, 一般的计算机任务分为 2 种:CPU密集型, 比如加减乘除等科学计算IO 密集型, 比如网络请求, 文件读写等其次, 高性能相关的 2 个概念:并行: 同一个时刻, 同一个 CPU 只能执行同一个任务, 要同时执行多个任务, 就需要有多个 C原创 2021-12-22 16:34:05 · 370 阅读 · 0 评论 -
Golang 日志调试
日志调用:m是一个结构体mstring,_ := json.Marshal(m)params := map[string]string{ "type": string(mstring),}jsonParams, _ := json.Marshal(params)util.WriteLog("message.log", string(jsonParams))log.gopackage utilimport ( "io" "os" ...原创 2021-01-11 11:51:37 · 402 阅读 · 0 评论 -
RPC原理
RPC就是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。原理一个完整的RPC主要包括三部分:服务注册中心(Registry),负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。 服务提供者(RPC Server),负责提供服务接口定义与服务实现类。 服务消费者(RPC Client),负责通过远程代理对象调用远程服务。服务提供者(Server)启动后主动向服务注册中心(Registry)注册机器IP、端口以及提供的服务列.原创 2021-01-04 10:11:15 · 4537 阅读 · 0 评论 -
golang 遇到的问题
一、编译项目是报错: build main/server: cannot load google/api: malformed module path "google/api": missing dot in first path element 解决:原创 2020-12-18 09:56:33 · 1036 阅读 · 2 评论 -
RPC框架原理
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有:应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。目前流行的开源 RP转载 2020-11-27 17:18:30 · 248 阅读 · 0 评论 -
Golang Grpc学习记录
RPC ProtoBuf Grpc什么是RPC、ProtoBuf、Grpc。 怎么安装protoBuf【如何让protobuf生成相对对应的go、php、java... 调用的服务端】、Grpc以及他们的使用步骤【会有相应Demo】原创 2020-11-30 11:43:13 · 115 阅读 · 0 评论 -
grpc生成go文件命令
标题: grpc生成go文件命令类型: Golang内容: 生成server文件命令: protoc --go_out=plugins=grpc:../../../modules/course/info/ ./proto_src/course/info/info.proto 其中 : 1) grpc:../../../modules/course/info/ 表示文件的生成目录 2)./proto_src/course/info/info.proto 表示 inf...原创 2020-11-13 18:20:05 · 1284 阅读 · 0 评论 -
Grpc介绍 — Go-Service To PHP-Client
笔者现在公司项目大部分是PHP进行开发,要完成整体微服务化必须要考虑PHP使用上的可行性,Grpc也是支持PHP作为client端发起Grpc请求,但是依赖的扩展等都相对复杂(毕竟不是亲儿子),那么本文就接受怎么使用PHP调用Grpc服务。附上:喵了个咪的博客:w-blog.cn博文实例demo:GitHub - sunmi-OS/grpc-php-to-golang-demogrpc官网:grpc / grpc.ioprotobuf代码仓库:Release...原创 2020-10-27 16:56:34 · 314 阅读 · 0 评论 -
Golang reflect反射的简单应该
func (c *Course) Test(ctx *gin.Context) { var name string = "咖啡色的羊驼" //todo::TypeOf会返回目标数据的类型, 比如int/float/struct/指针等 reflectType := reflect.TypeOf(name) //todo:: valueOf返回目标数据的值,比如上文的 "咖啡色的羊驼" reflectValue := reflect.ValueOf(name) f.原创 2020-09-08 18:26:54 · 225 阅读 · 0 评论 -
Golang ... 可变参数——参数数量不固定的函数形式
例1:func test(args ...string) { for _, v := range args { fmt.Println(v) }}调用var strs = []string{ "a", "b", "c",}test(strs...)例2:在多个可变参数函数中传递参数func rawPrint(list ...interface{}) { for _, s := range list { switc原创 2020-09-08 16:26:54 · 701 阅读 · 0 评论 -
Golang interface赋值与取值的实例
bs := make(map[string]string)bs["name"] = "张三"bs["age"] = "12"var student interface{}student = bsa := student.(map[string]string) //将interface转换为map类型,如果不确定数据类型的时候可以使用类型断言,确定其类型之后再转换为相对应的类型,然后取值fmt.Printf("学生的姓名是: \n %v", a["name"]) //结果: 张三.原创 2020-09-08 08:52:40 · 9195 阅读 · 0 评论 -
Golang go学习路线
原创 2020-09-04 12:19:30 · 286 阅读 · 0 评论 -
Golang 地址、指针操作
在对普通变量使用"&"操作符取地址获得这个变量的指针后,可以对指针使用"*"操作,也就是指针取值,代码如下://准备一个字符串类型var hourse = "Malibu"//对字符串取地址,prt类型为*stringptr := &hourse//打印ptr的类型fmt.Printf("ptr的类型为: %T \n", ptr) //输出: ptr的类型为: *string//打印ptr的指针地址fmt.Printf("ptr的指针地址为: %p\n"...原创 2020-09-01 08:45:23 · 2059 阅读 · 0 评论 -
Golang struct 到 map[string]interface{} 的转化
package mainimport ("fmt""reflect")type VehicleInfo struct { // ID bson.ObjectId `bson:"_id,omitempty"` VehicleId string `bson:"编号"` Date string `bson:"日期"` Type string `bson:"类型"` Brand string `bson:"型号"` Co.原创 2020-08-31 14:51:44 · 1902 阅读 · 1 评论 -
Golang Grom查询条件的封装 满足 in、不等于各种条件
package daoimport ( "fmt" "strings")type NullType byteconst ( _ NullType = iota // IsNull the same as `is null` IsNull // IsNotNull the same as `is not null` IsNotNull)// sql build wherefunc WhereBuild(where map[string]inte.转载 2020-08-25 12:09:27 · 2164 阅读 · 1 评论 -
Golang Go Modules 终极入门
Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。而 Go1.14,在近期也终于正式发布,Go官方亲自 “喊” 你来用:因此在今天这篇文章中,我将给大家带来 Go modules 的 “终极入门”,欢迎大家一起共同探讨。Go modules 是 .转载 2020-08-24 17:49:46 · 1092 阅读 · 0 评论 -
Golang 封装Elasticsearch
package toolimport ( "context" "encoding/json" "fmt" "log" "os" "strconv" "time" "gopkg.in/olivere/elastic.v6")type EsClientType struct { EsCon *elastic.Client}var Timeout="10s" //超时时间var EsClient EsClientType //连接类型.原创 2020-08-23 09:51:37 · 798 阅读 · 1 评论 -
Golang sync.Map
前言今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。 回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。1.为什么需要sync.Map? 2.sync.Map如何使用? 3.理一理sync.Map源码实现? 4.sync.Map的优缺点? 5.思维扩散?正文1.为什么需要sync.Map?关于map可以转载 2020-08-18 07:18:21 · 312 阅读 · 0 评论 -
Golang list列表
列表的原理可以这样理解:假设 A、B、C 三个人都有电话号码,如果 A 把号码告诉给 B,B 把号码告诉给 C,这个过程就建立了一个单链表结构,如下图所示。图:三人单向通知电话号码形成单链表结构如果在这个基础上,再从 C 开始将自己的号码告诉给自己所知道号码的主人,这样就形成了双链表结构,如下图所示。图:三人相互通知电话号码形成双链表结构那么如果需要获得所有人的号码,只需要从 A 或者 C 开始,要求他们将自己的号码发出来,然后再通知下一个人如此循环,这样就构成了一个列表遍历..转载 2020-08-18 07:02:37 · 1418 阅读 · 0 评论 -
Golang logger的封装
func (u *User) OrgTest(ctx *gin.Context) { //创建输出日志 //logFile, err := os.Create("./" + time.Now().Format("2006-01-02") + ".txt") logFile, err := os.OpenFile("./" + time.Now().Format("2006-01-02") + ".txt", os.O_APPEND|os.O_CREATE, 0666) //这种是追加模..原创 2020-08-14 09:03:08 · 751 阅读 · 0 评论 -
Golang log包
log 包主要用于在程序中输出日志。log 包中提供了三类日志输出接口,Print、Fatal 和 Panic。Print 是普通输出; Fatal 是在执行完 Print 后,执行 os.Exit(1); Panic 是在执行完 Print 后调用 panic() 方法。应用实例例1:a := "abc"log.Printf("a的值是 %v", a) //结果: 2020/08/14 07:59:23 a的值是 abclog.Printf("这是log.Printf") .原创 2020-08-14 08:08:26 · 415 阅读 · 0 评论 -
Golang sync 包的相关使用方法
Desc:Go sync 包的使用方法,sync.Mutex,sync.RMutex,sync.Once,sync.Cond,sync.Waitgroup尽管 Golang 推荐通过 channel 进行通信和同步,但在实际开发中 sync 包用得也非常的多。另外 sync 下还有一个 atomic 包,提供了一些底层的原子操作(这里不做介绍)。本篇文章主要介绍该包下的锁的一些概念及使用方法。整个包都围绕这 Locker 进行,这是一个 interface:type Locker interfa转载 2020-08-11 17:18:14 · 250 阅读 · 0 评论 -
Golang bufio包的使用
原文地址:http://www.niu12.com/article/38github地址:https://github.com/ZQCard/go_api_practice// 参考:https://www.cnblogs.com/golove/p/3282667.html// bufio 包实现了带缓存的 I/O 操作// 它封装一个 io.Reader 或 io.Writer 对象// 使其具有缓存和一些文本读写功能package mainimport ( "bufio"转载 2020-08-11 15:45:24 · 954 阅读 · 0 评论 -
Golang 数组、切片、映射
原文地址:http://www.niu12.com/article/11####数组 数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。 数组存储的类型可以是内置类型,如整型或者字符串,也可以是某种结构类型, 其占用的内存是连续分配的. 由于内存连续,CPU能把正在使用的数据缓存更久的时间。 而且内存连续很容易计算索引, 可以快速迭代数组里的所有元素。 声明: 两个要素:长度和类型 声明数转载 2020-08-11 15:10:46 · 250 阅读 · 0 评论 -
Golang bytes缓冲区使用介绍
缓冲区原理简介: go字节缓冲区底层以字节切片做存储,切片存在长度len与容量cap, 缓冲区写从长度len的位置开始写,当len>cap时,会自动扩容。缓冲区读会从内置标记off位置开始读(off始终记录读的起始位置),当off==len时,表明缓冲区已全部读完 并重置缓冲区(len=off=0),此外当将要内容长度+已写的长度(即len) <= cap/2时,缓冲区前移覆盖掉已读的内容(off=0,len-=off),从避免缓冲区不断扩容。package main...原创 2020-08-11 10:09:18 · 1216 阅读 · 0 评论 -
Goland json序列化、反序列化【反序列化成对应的数据类型比如:结构体、map、切片】
介绍 json序列化是指: 将有key-value的结构体的数据类型(比如结构体、map、切片)序列化成json字符串的操作,对基本数据类型数列化意义不大应用type Monster struct { Name string `json:"monster_name"` //反射机制 Age int Grade int}func (u *User) OrgList(ctx *gin.Context) { monster := Monster{ .原创 2020-08-11 08:24:08 · 818 阅读 · 0 评论 -
Golang 文件操作【常用】(os包)
注: 以下图片来源于老师讲课的笔记,大家看看能明白就好原创 2020-08-11 07:38:04 · 323 阅读 · 0 评论 -
Golang 文件操作【不常用】(os包)
注: 以下图片来源于老师讲课的笔记,大家看看能明白就好原创 2020-08-10 18:08:22 · 112 阅读 · 0 评论 -
Golang 异常处理(panic、recover、defer)
func panicTest() { defer func(){ if p:= recover(); p != nil { fmt.Println("reover panic") } }() panic(errors.New("this is a panic"))}func (u *User) OrgList(ctx *gin.Context) { fmt.Println("before panic") panicTes.原创 2020-08-10 09:54:14 · 630 阅读 · 0 评论 -
Golang strconv包 、string、int、int64互相转换
strconv 包括 四 类函数1.Append 类,例如 AppendBool(dst []byte, b bool)[]byte,将值转化后添加到[]byte的末尾2.Format 类,例如FormatBool(b bool) string,将bool float int uint 类型的转换为string,FormatInt的缩写为Itoa3.Parse 类,例如ParseBool(str string)(value bool, err error) 将字符串转换为 bool float in.原创 2020-08-10 07:54:50 · 1328 阅读 · 0 评论 -
Golang rune数据类型
官方解释://int32的别名,几乎在所有方面等同于int32//它用来区分字符值和整数值type rune = int321、golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。例: 2、golang中海油一个byte数据类型与rune相似,它们都是用来表示字符类型的变量类型。它们的不同在于:byte 等同于int8,常用来处理ascii字符 rune...转载 2020-08-09 18:55:17 · 1372 阅读 · 0 评论 -
Golang 单引号、双引号与反引号的用法解析
Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示即:一个Go语言字符串是一个任意字节的常量序列。Golang的双引号和反引号都可用于表示一个常量字符串,不同在于:双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行)反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但原创 2020-08-09 18:48:50 · 847 阅读 · 0 评论 -
Golang字符串处理
Golang中字符串处理主要用的是正在上传…重新上传取消原创 2020-08-09 18:15:03 · 430 阅读 · 0 评论 -
Golang 地址引用问题
1、2、第96行输出的值是:org中的地址: &[]问题:为什么输出值是&[],而不是一个地址呢原创 2020-08-10 19:46:04 · 263 阅读 · 0 评论