
Go
文章平均质量分 58
judgejames
这个作者很懒,什么都没留下…
展开
-
golang多线程中如何捕获error并返回(使用channel通道)
在多线程中,每个 goruntine 中可能共享同一个 error 变量,此时当发生 error 事件后当对应 goruntine协程退出后其他协程依然在执行中,因此很有可能会再次修改 error 变量进行覆盖。 使用带有缓冲 channel 通道,在发生 error 时将 error 数据写入管道中,这样在所有多线程执行完任务后就可以捕捉到所有发生的 error 错误信息。 此方案需要等待所有多线程执行结束退出(wg.Wait() 阻塞结束),因此适用的场景是需要捕捉多线程中所原创 2022-06-10 11:52:30 · 2492 阅读 · 1 评论 -
Go语言反射(reflect)
反射(reflection)是在 Java 出现后流行起来的,通过反射可以在运行时获取丰富的类型信息以及更新操作,支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期进行获取,并且有能力修改它们。但是反射带来的问题是代码的可读性差和性能问题,下文会讲到。Go 语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 reflect.Type 和 reflect.Value,任意对象在反.原创 2022-04-25 11:40:47 · 2184 阅读 · 0 评论 -
Go语言 interface 理解 & 与反射的关系
理解 interface1、interface 是一种类型准确来说,interface 是带有一组方法的一种类型,这些方法定义了 interface 的行为。如果一个类型实现了一个 interface 中所有方法,则该类型实现了该 interface。又因为 go 允许不带任何方法的interface存在,这种interface成为空interface。所以所有类型都实现了 empty interface,因为任何一种类型至少实现了 0 个方法。go 没有显式的关键字用来实现 interfa原创 2022-04-25 11:22:25 · 1231 阅读 · 0 评论 -
k8s集群自动化部署脚本-centOS
操作系统:centOS第一步,执行环境配置脚本(所有节点执行)执行脚本时添加hostname参数。#!/bin/bashecho $#if [ $# -ge 2 ]; then echo "参数个数过多,请确认是否输入错误" exitelif [ $# -le 0 ]; then echo "无参数 ,请确认是否输入错误" exitelse # $1是k8s集群中节点的名字 hostnamectl set-hostname $1fi# 修改SeLinux配置,永久原创 2021-10-15 11:12:11 · 1358 阅读 · 1 评论 -
Golang接收带空格字符串
scan、scanf、scanln在输入时,都会以空格作为一个字符串的结束在C和C++中我们直接可以调用自带库函数来实现,比如C可以使用gets()函数、C++可以使用getLine()函数。但是在go中需要引入第三方库来完成对带有空格的字符串的接受。bufio库使用bufio包里带缓冲的Reader实现带空格字符串的输入,实例代码如下:package main import ( "bufio" "fmt" "os") func main() { reader := b.原创 2021-09-08 16:41:32 · 1961 阅读 · 0 评论 -
根据ip查找所属最小网段
首先需要有访问数据库的接口,可以获取到所有内网,并且是具有层次性的,每一个网段都有所属父网段。原创 2019-08-28 11:07:44 · 574 阅读 · 0 评论 -
接口文档的简单设计
原创 2019-08-27 18:57:32 · 1561 阅读 · 0 评论 -
beego过滤器
beego 支持自定义过滤中间件,例如安全验证,强制跳转等。过滤器函数如下所示:beego.InsertFilter(pattern string, position int, filter FilterFunc, params ...bool)filter filter 函数 type FilterFunc func(*context.Context) params 设置 r...原创 2019-08-27 18:22:37 · 829 阅读 · 0 评论 -
剖析cmdb业务处理流程
剖析user服务接口,URL:localhost:8080/ops/user/findUserAll原创 2019-08-27 18:18:11 · 405 阅读 · 0 评论 -
关于json格式化输出json.MarshalIndent()的使用
JSON(JavaScriptObjectNotation,JS对象标记)是一种轻显级的数据交换格式。它基于ECMAScript规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。Marshalfunc Marshal(v interf...原创 2019-08-27 18:16:16 · 7083 阅读 · 2 评论 -
Go实现将字符串类型IP地址转化为32位整型
输入:string类型的IP字符串输出:无符号32位整形 + errornet/ip.go原创 2019-08-23 16:02:23 · 967 阅读 · 0 评论 -
设置Go环境变量GOPATH,解决Go中引用某些库的问题
最近再Goland下遇到一个坑,在导入github.com/cihub/seelog时,一直有问题。解决方法如下:首先需要在终端从github.com上获取这个库,命令为 go get github.com/cihub/seelog 一般可以先安装Git环境,在Gitbash中直接输入即可 2.然后检查go的环境变量GOPATH,一般会在用户...原创 2019-07-26 13:41:02 · 3286 阅读 · 0 评论 -
Go下encoding/json的Indent()接口以及Marshal()和MarshalIndent()的区别
通俗来讲,Indent()对读的结果做了一些处理,简单说就是对Json 多了一些格式处理。而MarshalIndent()函数实现里就调用了饿Indent().比如:js,_ := json.Marshal(&person)jsIndent,_ := json.MarshalIndent(&person, "", "\t")fmt.Println("\njs:\n...原创 2019-07-25 17:55:36 · 10326 阅读 · 0 评论