-
Golang常见误区(二)
所属栏目:[大数据] 日期:2020-12-16 热度:127
35. 关闭 HTTP 的响应体 使用 HTTP 标准库发起请求、获取响应时,即使你不从响应中读取任何数据或响应为空,都需要手动关闭响应体。新手很容易忘记手动关闭,或者写在了错误的位置: // 请求失败造成 panic func main() { ??? resp,err := http.Get("https:/[详细]
-
Golang自定义包导入
所属栏目:[大数据] 日期:2020-12-16 热度:72
# 文件Tree project -/ bin -/ pkg -/ src - main.go -/ test - test1.go -test2.go main.go package mainimport ( " fmt " " ./test " ) func main() { fmt.Print( " test1n " ) test.Ojbk1() fmt.Print( " test2n " ) test.Ojbk2( " okokok " ) } test/t[详细]
-
Golang异常处理
所属栏目:[大数据] 日期:2020-12-16 热度:115
Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。 package main import " fmt " func main(){ defer func(){ // 必须要先声明defer,否则不能捕获到panic异常 fmt.Println( " c " ) if err:=recover();err!= nil{ fmt.Pr[详细]
-
go语言,第三方包相对路径导入包引起的问题及解决方案(goquery
所属栏目:[大数据] 日期:2020-12-16 热度:83
对go语言而言,跟踪init很显然包有且仅有一次被导入的可能。 但是重复引用了goquery包,后编译出现问题? 项目涉及相关目录 ├── main.go └── parse ? ? └── parse.go parse包和main.go都导入了 goquery包 main.go 通过 import("./parse")导入parse包[详细]
-
golang 并发顺序输出数字
所属栏目:[大数据] 日期:2020-12-16 热度:181
参考 package mainimport ( "fmt" "sync/atomic" "time")func main() { var count uint32 trigger := func(i uint32,fn func()) { for { if n := atomic.LoadUint32(count); n == i { fn() atomic.AddUint32(count,1) break } time.Sleep(time.Nanosecond) }[详细]
-
golang 切片和数组在for...range中的区别
所属栏目:[大数据] 日期:2020-12-16 热度:147
切片是引用类型,而数组是值类型,并且for...range有以下规则: range表达式只会在for语句开始执行时被求值一次,无论后边会有多少次迭代 range表达式的求值结果会被复制,也就是说,被迭代的对象是range表达式结果值的副本而不是原值 package mainimport ([详细]
-
ARTS-S golang单元测试
所属栏目:[大数据] 日期:2020-12-16 热度:200
golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittestfunc Add(a,b int) int { return a + b}func Sub(a,b int) int { return a - b}func Mul(a,b int) int { return a * b}func Di[详细]
-
golang 中的指针
所属栏目:[大数据] 日期:2020-12-16 热度:160
# golang 中的指针 看了一篇 [ 文章 ] (http://blog.51cto.com/steed/2341409),写的很好。这里略微总结下重点: 1. 地址值、unsafe.Pointer、uintptr 的关系 - 地址值 与 unsafe.Pointer 可以互相转换 - uintptr 与 unsafe.Pointer 可以互相转换 - 地址在[详细]
-
说说不知道的Golang中参数传递
所属栏目:[大数据] 日期:2020-12-16 热度:59
本文由云+社区发表 导言 几乎每一个C++开发人员,都被面试过有关于函数参数是值传递还是引用传递的问题,其实不止于C++,任何一个语言中,我们都需要关心函数在参数传递时的行为。在golang中存在着map、channel和slice这三种内建数据类型,它们极大的方便着[详细]
-
Golang实现九九乘法表
所属栏目:[大数据] 日期:2020-12-16 热度:65
代码相对比较简单,考虑一点细节,就可以了。 ? package main;import ("fmt""strconv");func Chengfabiao() {var table [9][9]string;//定义二维表var value string;for i := 0; i 9; i++ {//行for j := 0; j = i; j++ {//列num := (j + 1) * (i + 1);//计算[详细]
-
gearman openresty 集成试用
所属栏目:[大数据] 日期:2020-12-16 热度:177
很简单使用了一个openresty 的lua 模块 环境准备 docker-compose 文件 详细配置可以参考 https://github.com/rongfengliang/gearmangolang-docker ? version: "3" services: demo: image: artefactual / gearmand: latest command: -- queue - type = redis[详细]
-
Go语言开发(十九)、GoConvey测试框架
所属栏目:[大数据] 日期:2020-12-16 热度:122
Go语言开发(十九)、GoConvey测试框架 一、GoConvey简介 1、GoConvey简介 GoConvey是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持多种Web界面特性。 官方地址: https://github.com/smartystreets/goconvey 安装:[详细]
-
深入理解golang 的栈
所属栏目:[大数据] 日期:2020-12-16 热度:74
线程栈(thread stacks)介绍 先回顾下linux的内存空间布局 ? 简书_stack02.png 当启动一个C实现的thread时,C标准库会负责分配一块内存作为这个线程的栈。标准库分配这块内存,告诉内核它的位置并让内核处理这个线程 的执行。 在linux系统中,可通过? ulimit[详细]
-
经济学人使用Golang构建微服务历程回顾
所属栏目:[大数据] 日期:2020-12-16 热度:138
关键点 经济学人内容分发系统需要更大的灵活性,将内容传递给日益多样化的数字渠道。为了实现这一灵活性目标并保持高水平的性能和可靠性,平台从一个单体结构过渡到微服务体系结构。 用Go编写的服务是新系统的一个关键组件,它使得团队能够交付可伸缩的、高[详细]
-
Golang调用windows下的dll动态库中的函数
所属栏目:[大数据] 日期:2020-12-16 热度:114
Golang调用windows下的dll动态库中的函数? 使用syscall调用。 package mainimport ( "fmt" "syscall" "time" "unsafe")const ( MB_OK = 0x00000000 MB_OKCANCEL = 0x00000001 MB_ABORTRETRYIGNORE = 0x00000002 MB_YESNOCANCEL = 0x00000003 MB_YESNO = 0x00[详细]
-
Go语言中的rune类型浅析
所属栏目:[大数据] 日期:2020-12-16 热度:115
rune是Go语言中一种特殊的数据类型,它是int32的别名,几乎在所有方面等同于int32,用于区分字符值和整数值 1 package main 2 3 import " fmt " 4 5 func main() { 6 7 var str = " hello 世界 " 8 fmt.Println( " len(str): " ,len(str)) 9 10 } 这段代码的执[详细]
-
Golang精编100题-搞定golang面试
所属栏目:[大数据] 日期:2020-12-16 热度:168
Golang 精编 100 题 能力模型 级别 模型 初级 primary 熟悉基本语法,能够看懂代码的意图; 在他人指导下能够完成用户故事的开发,编写的代码符合 CleanCode 规范; 中级 intermediate 能够独立完成用户故事的开发和测试; 能够嗅出代码的坏味道,并知道如何[详细]
-
Golang go get第三方库的小坑
所属栏目:[大数据] 日期:2020-12-16 热度:136
在树莓派上go get fail的问题记录及解决方案 go get github.com/terrancewong/serial ? # 错误为go path与go root路径的问题 Solve:环境加入gopath rm - rf $GOPATH sudo env GOPATH=/opt/go go get github.com/terrancewong/serial ? #?unix包含低级操作系[详细]
-
Go语言开发(二十一)、GoMock测试框架
所属栏目:[大数据] 日期:2020-12-16 热度:111
Go语言开发(二十一)、GoMock测试框架 一、GoMock简介 1、GoMock简介 GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的testing包良好集成,也能用于其它的测试环境中。GoMock测试框架包含了GoMock包[详细]
-
Golang中设置函数默认参数的优雅实现
所属栏目:[大数据] 日期:2020-12-16 热度:58
在Golang中,我们经常碰到要设置一个函数的默认值,或者说我定义了参数值,但是又不想传递值,这个在python或php一类的语言中很好实现,但Golang中好像这种方法又不行。今天在看Grpc源码时,发现了一个方法可以很优雅的实现,叫做 Functional Options Patter[详细]
-
在Golang中获取系统的磁盘空间内存占用
所属栏目:[大数据] 日期:2020-12-16 热度:160
获取磁盘占用情况(Linux/Mac下有效) import ( "syscall") type DiskStatus struct { All uint64 `json:"all"` Used uint64 `json:"used"` Free uint64 `json:"free"`} // disk usage of path/diskfunc DiskUsage(path string) (disk DiskStatus) { fs := sys[详细]
-
go ssh 执行命令
所属栏目:[大数据] 日期:2020-12-16 热度:169
go ssh 执行命令 package mainimport ( "fmt" gossh "golang.org/x/crypto/ssh" "net")type Cli struct { user string pwd string addr string client *gossh.Client session *gossh.Session LastResult string }func (c *Cli) Connect() (*Cli,error) { con[详细]
-
用golang chromedp 操作已经打开的chrome浏览器
所属栏目:[大数据] 日期:2020-12-16 热度:53
win7 环境,主要是一开始想在代码中先用exec.Command启动chrome,但始终不能成功监听9222端口,折腾了很长时间, 需要先手工启动chrome监听端口,具体写在代码注释中了。 然后再运行代码,代码只是在开源代码基础上稍作修改,将访问不了的google换成sohu。代[详细]
-
go语言切片作为函数参数的研究
所属栏目:[大数据] 日期:2020-12-16 热度:159
slice作为函数参数是值传递 golang中的切片slice底层通过数组实现,slice类似一个结构体,其中一个字段保存的是底层数组的地址,还有长度(len) 和 容量(cap)两个字段。 结构体作为函数参数时是值拷贝,同理,实际上slice作为函数参数时也是值拷贝,在函数中[详细]
-
Golang的sync.WaitGroup 实现逻辑和源码解析
所属栏目:[大数据] 日期:2020-12-16 热度:93
在Golang中,WaitGroup主要用来做go Routine的等待,当启动多个go程序,通过waitgroup可以等待所有go程序结束后再执行后面的代码逻辑,比如: func Main() { wg : = sync.WaitGroup{} for i := 0 ; i 10 ; i++ { wg.Add( 1 ) go func() { defer wg.Done() ti[详细]
