-
014.golang 并发concurrency
所属栏目:[大数据] 日期:2020-12-16 热度:164
并发concurrency 很多人都是冲着 Go 大肆宣扬的高并发而忍不住跃跃欲试,但其实从 源码的解析来看,goroutine 只是由官方实现的超级“线程池”而已。 不过话说回来,每个实例 4-5KB 的栈内存占用和由于实现机制而大幅 减少的创建和销毁开销,是制造 Go 号称[详细]
-
如何在golang中的一个字符串中插入一个数字
所属栏目:[大数据] 日期:2020-12-16 热度:155
package mainimport ( "fmt")func main() { fmt.Println(say(9))}func say(num int)(total string){return fmt.Sprintf("There are %s reasons to code!",num)} 我的输出是 There are %!s(int=9) reasons to code! 我应该如何在字符串中插入一个数字? 如果[详细]
-
Go1.10帮他人写一个简单的CGO使用IcmpSendEcho的例子
所属栏目:[大数据] 日期:2020-12-16 热度:80
package main import ( "fmt" "syscall" "unsafe" ) /* #include winsock2.h #include iphlpapi.h #include icmpapi.h */ import "C" const INADDR_NONE = 0 xffffffff var ( Ws2_32 = syscall.NewLazyDLL( "Ws2_32.dll" ) Iphlpapi = syscall.NewLazyDLL( "[详细]
-
不得不知道Golang之sync.Map源码分析
所属栏目:[大数据] 日期:2020-12-16 热度:85
sync.Map源码分析 背景 众所周知,go普通的map是不支持并发的,换而言之,不是线程(goroutine)安全的。博主是从golang 1.4开始使用的,那时候map的并发读是没有支持,但是并发写会出现脏数据。golang 1.6之后,并发地读写会直接panic: fatal error: concurren[详细]
-
单元测试 – 如何测试go(golang)中的未注册(私有)功能?
所属栏目:[大数据] 日期:2020-12-16 热度:156
我有兴趣为“未登录(私人)功能”创建单元测试。然而,它基本上很难在测试包中形成单元测试,因为我必须使它们“公开”。最终,他们的整个关键点都是无私的。关键是这些帮助函数有助于模块化,现在它们是模块化的,能够为它们创建单元测试是非常好的,而不使[详细]
-
[golang] go语言依赖
所属栏目:[大数据] 日期:2020-12-16 热度:198
本想介绍 vendor,发现两篇介绍太好了,就不多说了,直接传送门 https://ieevee.com/tech/2017/07/10/go-import.html https://studygolang.com/articles/10312[详细]
-
指针 – Golang:如何在包中的文件中使用全局变量?
所属栏目:[大数据] 日期:2020-12-16 热度:140
我有以下文件结构: 车型/ db.go type DB struct { *sql.DB}var db *DBfunc init() { dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",DB_USER,DB_PASSWORD,DB_NAME) db,err := NewDB(dbinfo) checkErr(err) rows,err := db.Query("[详细]
-
golang http request 读两次body
所属栏目:[大数据] 日期:2020-12-16 热度:154
方法是body重新赋值, bodyBytes,_ := ioutil.ReadAll(req.Body)req.Body.Close() // must close req.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) 看了三个网页,都是这样做的: https://stackoverflow.com/questions/46948050/how-to-read-respon[详细]
-
Golang官方依赖管理工具:dep
所属栏目:[大数据] 日期:2020-12-16 热度:183
dep ensure -add github.com/360EntSecGroup-Skylar/excelize[详细]
-
Golang:安装目录错误?
所属栏目:[大数据] 日期:2020-12-16 热度:52
我有错误: go install: no install location for directory /Users/xwilly/Dropbox/go/project/src outside GOPATH 我在OS X上使用了1.1版本。 我可以建立运行但不能安装软件包。 我的环境: GOPATH=/Users/xwilly/Dropbox/go/projectPATH=/Library/Framewo[详细]
-
Golang:无缓冲和单向channel
所属栏目:[大数据] 日期:2020-12-16 热度:97
简介 初学golang很容易混淆无缓冲的chan和只有一个元素的chan,认为这两个是一回事,其实是完全不同的,make(chan int) 是同步的,只能同时读写,没有读写会一直阻塞;make(chan int,1)是异步的,第一个入队的不会阻塞 c1:= make ( chan int ) 无缓冲c2:= ma[详细]
-
Golang:Golang生成动态库及调用
所属栏目:[大数据] 日期:2020-12-16 热度:80
简介 目前go动态库的生产只支持Linux,Windows下会报这样的错误,`-buildmode=plugin not supported on windows/amd64` CODE plugin.so package main import ( "fmt" ) func DC all () { fmt .P rintln ( "plugin.so was called" ) } func DC allWithParam ([详细]
-
Golang如何使用websocket
所属栏目:[大数据] 日期:2020-12-16 热度:66
下载websocket包 $ go get golang.org/x/net/websocket 如果下载失败,可能是被墙了。 package golang.org/x/net/websocket: unrecognized import path “golang.org/x/net/websocket” (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial[详细]
-
Golang中匿名界面实现
所属栏目:[大数据] 日期:2020-12-16 热度:155
在Go中,有没有办法匿名满足界面?似乎没有,但这是我最好的尝试。 (Playground) package mainimport "fmt"type Thing interface { Item() float64 SetItem(float64)}func newThing() Thing { item := 0.0 return struct { Item (func() float64) SetItem (f[详细]
-
Golang:import常用的几种方式
所属栏目:[大数据] 日期:2020-12-16 热度:183
用法 点操作 点操作就是导入这个包后可以直接省略包名调用函数, 不建议使用 package main import ( . "fmt" ) func main() { Println( "hello world" ) } . 别名操作 ,把包名替换成其他名,便于记忆或者更有意义,或者防止混淆 package main import ( conso[详细]
-
golang 位运算
所属栏目:[大数据] 日期:2020-12-16 热度:143
运算符 描述 实例 按位与运算符""是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 (A B) 结果为 12,二进制为 0000 1100 | 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 (A | B) 结果为 61,二进制为 0011 1101 ^ 按[详细]
-
golang 八进制 utf-8 编码转中文
所属栏目:[大数据] 日期:2020-12-16 热度:119
当调试程序,打印出变量的值时,有可能输出的是八进制 utf-8 编码(尤其是 protobuf 变量) 例如: 346200241346200241346200 这样的字符串如果作为字面量,go可以自动转化, 但如果是从文件或string中读取,就不行了。 可以使用 正则表达式 简单处[详细]
-
Golang::条件变量的使用
所属栏目:[大数据] 日期:2020-12-16 热度:74
# code package mainimport ( "fmt" "math/rand" "runtime" "sync" "time" )var productCount inttype Factory struct { locker *sync .Mutex cond *sync .Cond goods []int}//func (self *Factory) init() { self .locker = sync .Mutex {} self .cond = sy[详细]
-
golang LimitReader TeeReader Buffer例子
所属栏目:[大数据] 日期:2020-12-16 热度:157
用到buffer的地方要加 还有就是如果知道想要读的数据的长度 TeeReader 好像并没有 LimitReader 好用,因为要创建一个 Writer ,就相当于要新开一块内存 这个地方的go的库函数代码都是可以比较容易看懂的 package main import ( "strings" "io" "bytes" "fmt"[详细]
-
检查字符串是否是int golang
所属栏目:[大数据] 日期:2020-12-16 热度:170
如何在Golang中检查字符串值是否为整数? 就像是 v := "4"if isInt(v) { fmt.Println("We have an int,we can safely cast this with strconv")} 注意:我知道strconv.Atoi返回一个错误,但是有没有其他的功能呢? strconv.Atoi的问题是它将返回7为“a7” 正[详细]
-
Golang的包名
所属栏目:[大数据] 日期:2020-12-16 热度:183
Golang的包名 (金庆的专栏 2018.6) 摘自: https://talks.golang.org/2014/organizeio.slide#1 The name of a package Keep package names short and meaningful. Don’t use underscores,they make package names long. io/ioutil not io/utilsuffixarray n[详细]
-
Golang cpu的使用设置--GOMAXPROCS
所属栏目:[大数据] 日期:2020-12-16 热度:118
以下测试,使用的Go版本是1.8.3 不设置 如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核。 测试机器CPU有4个核,测试代码开启4个goroutine,从测试结果看4个核心全部跑满。 测试代码如下: package main func main() { go task() go t[详细]
-
Golang::WaitGroup 等待所有goroutine退出
所属栏目:[大数据] 日期:2020-12-16 热度:80
简介 waitgroup类似于的信号量,用于等待所有的goroutine退出,基本的操作包括 add(int) 增加信号的值,add的参数应该都为正数 ,done() 减少信号的值,相当于add(-1) ,wait() 等待信号量值为0,等待期间会一直阻塞 code package mainimport ( "fmt" "sync" "[详细]
-
golang 的 strings.TrimLeft 有个 bug,用strings.TrimPrefix代
所属栏目:[大数据] 日期:2020-12-16 热度:157
https://github.com/golang/go/issues/25328 just for a demo func main () { cfgs : = "mongodb://off" cfgs = strings. TrimLeft(cfgs, "mongodb://" ) fmt. Printf( "cfgs:%vn" ,cfgs) //output == cfgs:ff }[详细]
-
golang:通过reflect取struct的字段长度,手动取结构体tag与name
所属栏目:[大数据] 日期:2020-12-16 热度:76
type Config struct { Listen string `json: "listen" toml: "listen" ` UserAPIURL string `json: "userapisrv" toml: "userAPIURL" ` SecretKey string `json: "secret_key" toml: "secret_key" ` AuthorityUrl string `json: "authorityapisrv" toml: "au[详细]
