Go语言中文网 为您找到相关结果 111

使用go语言复制文件

怎样使用go语言将文件复制成另一文件?go语言标准包io里提供一个简单的函数copy实现了这个功能,下面是一个例子。 //////////// package main import ( "fmt" "io" "os" ) func main() { CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件 fmt.Println("复制完成",) } func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } defer src.Cl...阅读全文

博文 2014-10-24 12:00:01 学思

golang 图片处理,剪切,base64数据转换,文件存储

AUTH:PHILO VERSION:2 本文主要介绍: 图片文件的读写。 图片在go缓存中如何与base64互相转换 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file 12ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并把文件写入到buffererr2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) datasource base64 string base64 -> buffer 12ddd, _ := base64.StdEncoding.DecodeString(datas...阅读全文

博文 2015-03-15 15:56:04 jianyingLi

go语言 自定义 error

package main import ( "errors" "fmt" ) type data struct{} func (this *data) Error() string { return "" } func bad() bool { return true } //自定义错误返回函数 func test() error { var p *data = nil if bad() { return p } return nil } //只是返回错误非空 func test1() error { var val error = errors.New("XXX") return val } func main() { var e error = test() if e == nil { ...阅读全文

博文 2014-10-04 19:26:43 elick

Golang初级系列教程-常见错误

知行易,知其不行难。首先,在这片文章中指出常见的一些错误,避免你在之后的编程中无所谓的调试工作。 多余的 Imports 命名区分大小写 分号分行 无效的分号 语法和其它问题 多余的 Imports 新建文件,将如下内容拷贝并执行 ErrProg1.go package main import "fmt" import "os" //excessive - we are not using any function in this package func main() { fmt.Println("Hello world") } 输出为: prog.go:4: imported and not used: os Go编译器对Go程序非常严格,如果你不使用,就不要有多余的请求。在上面的代码中...阅读全文

博文 2016-04-17 17:00:02 DowntownGuy

golang 中打印函数问题

/** * Created with IntelliJ IDEA. * User: zhangjian * Date: 13-5-13 * Time: 下午1:51 * To change this template use File | Settings | File Templates. */ package main import "fmt" import "unsafe" func main() { a_int := []int{1,2,3,4,5} ai:=reverse(a_int) for aa := range ai{ //1.这个地方"%d "中%d后面一定要加空格,不然golang会认为是字符串%d,直接输出 //fmt.Printf这个函数要求()括号里面的必须是字符串...阅读全文

博文 2015-06-17 20:04:03 zj360202

golang 图片处理,剪切,base64数据转换,文件存储

本文主要介绍: 1. 图片文件的读写。 2. 图片在go缓存中如何与base64互相转换 3. 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并把文件写入到buffer err2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) datasource base64 string base64 -> buffer ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并...阅读全文

博文 2016-06-15 09:00:00 satng

golang 中的内嵌(embeded)

内嵌与聚合: 外部类型只包含了内部类型的类型名, 而没有field 名, 则是内嵌。 外部类型包含了内部类型的类型名,还有filed名,则是聚合。聚合的在JAVA和C++都是常见的方式。而内嵌则是GO 的特有方式。 type Base struct { basename string } type Derive struct { ---内嵌 Base } type Derive struct { 内嵌, 这种内嵌与上面内嵌的区别是什么,后面详细介绍 *Base } type Derive struct{ 聚合 base Base } 内嵌的方式: 主要是通过结构体和接口的组合,有四种。 接口中内嵌接口 : 这里的做为内嵌接口的含义实际上还是指的一个定义,而不是接口的一个实例,相当于合并了两个...阅读全文

博文 2016-04-27 18:00:25 abccheng

golang for,range的坑

for,range 的k,v变量在整个遍历过程中共用,不能直接进行引用传递,即地址传递,但循环内定义的变量只能为当前循环所使用。 错误代码: package main import ( "encoding/json" "log" "time" ) type test struct { Name string `bson:"name" json:"name" yaml:"name"` // Command name (unique on the profile) } func (test test) String() string { out, err := json.Marshal(test) if err != nil { return err.Error() } return strin...阅读全文

ubuntu 安装 gccgo 并编译go

1,安装gccgo apt-get install gccgo 2,gccgo编译go源码 gccgo -o method2 method1.go 结果:method1是go build , method2 是 gccgo 编译的,发现method2比method1小很多啊,差不多三倍。可能是因为go build编译的是Debug,而gccgo 编译的是Release吧。 -rwxr-xr-x 1 root root 1286708 Jan 24 11:10 method1 -rwxr-xr-x 1 root root 40931 Jan 24 11:14 method2 错误: #/usr/bin/ld: cannot find -lgcc_s locate libgcc_s.so.1 l...阅读全文

博文 2015-06-18 09:02:45 leonpengweicn

GO语言练习:构建json 和 解析JSON 实例

本文介绍如何使用Go语言自带的库把对象转换为JSON格式,并在channel中进行传输后,并把JSON格式的信息转换回对象。 1、Go语言的JSON 库 Go语言自带的JSON转换库为 encoding/json 1.1)其中把对象转换为JSON的方法(函数)为 json.Marshal(),其函数原型如下 func Marshal(v interface{}) ([]byte, error) 也就是说,这个函数接收任意类型的数据 v,并转换为字节数组类型,返回值就是我们想要的JSON数据和一个错误代码。当转换成功的时候,这个错误代码为nil 在进行对象转换为 JSON 的过程中,会遵循如下几条规则: • 布尔型转换为 JSON 后仍是布尔型 , 如true -> true • 浮点型和整数...阅读全文

博文 2015-07-22 03:00:00 fengbohello

Gogland EAP 163.10615发布

#新鲜出炉Gogland 1.0EAP 163.10615。6发布,修复之前的部分bug,做简单工程可使用。 问题修复清单,可在通过官方页面查看:https://youtrack.jetbrains.com/issues/GO 以下为官网下载链接: + [Mac OS X 163.10615.6](http://download.jetbrains.com/go/gogland-163.10615.6.dmg ) + [Windows 163.10615.6](http://download.jetbrains.com/go/gogland-163.10615.6.exe) + [Linux 163.10615.6](http://download.jetbrains.co...阅读全文

Google:12 条 Golang 最佳实践

这是直接总结好的 12 条: 1. 先处理错误避免嵌套 2. 尽量避免重复 3. 先写最重要的代码 4. 给代码写文档注释 5. 命名尽可能简洁 6. 使用多文件包 7. 使用 `go get` 可获取你的包 8. 了解自己的需求 9. 保持包的独立性 10. 避免在内部使用并发 11. 使用 Goroutine 管理状态 12. 避免 Goroutine 泄露 ## 最佳实践 这是一篇翻译文章,为了使读者更好的理解,会在原文翻译的基础增加一些讲解或描述。 来在维基百科: ``` "A best practice is a method or technique that has consistently shown resu...阅读全文

优雅的处理错误,而不仅仅只是检查错误

这篇文章摘取至我在日本东京举办的 [GoCon spring conference](https://gocon.connpass.com/event/27521/) 上的演讲稿。 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/error-handle/ba5a9ada.png) ## 错误只是一些值 我花了很多时间来思考如何在 Go 中处理错误是最好的。我真希望能有一种简单直接的方式来处理错误,一些我们只要让 Go 程序员记住就能使用的规则,就像教数学或字母表一样。 然而,我得到的结论是:处理错误不止有一种方式。我认为 Go 处理错误的方式可以划分为 3 种主要的策略。 ## 标记错误策略 第一种错...阅读全文

博文 2018-03-03 20:02:30 polaris

golang json

1、Go语言的JSON 库 Go语言自带的JSON转换库为 encoding/json 1.1)其中把对象转换为JSON的方法(函数)为 json.Marshal(),其函数原型如下 func Marshal(v interface{}) ([]byte, error) 也就是说,这个函数接收任意类型的数据 v,并转换为字节数组类型,返回值就是我们想要的JSON数据和一个错误代码。当转换成功的时候,这个错误代码为nil 在进行对象转换为 JSON 的过程中,会遵循如下几条规则: • 布尔型转换为 JSON 后仍是布尔型 , 如true -> true • 浮点型和整数型转换后为JSON里面的常规数字,如 1.23 -> 1.23 • 字符串将以UTF-8编码转化输出为Unicode字符集的字...阅读全文

博文 2016-07-06 00:00:00 zhangym

02-GoLang定义变量

变量的常规定义 1、1定义一个变量,先定义再初始化 var num int num = 666 fmt.Printf("%d\n",num) 1.2定义的同时初始化 var num2 int =888 fmt.Printf("%d\n",num2) 1.3定义的同时初始化并省略数据类型 var num3 = 222 fmt.Printf("%d\n",num3) // 在Go语言中, 可以利用%T输出变量的数据类型 fmt.Printf("%T\n",num3) 1.4定义的同时初始化, 并省略数据类型和var 注意点 1、 :=做了两件事情 , 1.会先定义一个变量 2.给定义的变量赋值 2、:=在Go语言开发中非常非常非常常用 num4:=333 fmt.Printf("%d\n",nu...阅读全文

博文 2018-10-07 11:34:43 箩篼

go - 内置基础类型

Go 语言中包括以下内置基础类型: 布尔型:bool 整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint 浮点型:float32 float64 复数型:complex64 complex128 字符串:string 字符型:rune 错误型:error 1. bool类型 关键字: bool 可定义为: true 或者 false 或者 逻辑表达式 var bool1 bool = true var bool2 bool = (2 == 2) 注:不能接受其他类型的赋值,包括(0, 1),也不支持自动或强制类型转换 2. 整型 分为有符号与无符号两种 值范围,如: int8 2^8 -128~127, ui...阅读全文

博文 2014-10-04 19:26:54 dyllove98

关于json转struct struct中有map

有这么一个json,我想直接转成struct struct ``` type whatBean struct { action string control string } ............... tmp := "{\"这个key好多\":{\"action\":\"123\",\"control\":\"456\"},\"这个key真的好多所以用map\":{\"action\":\"/roamApi/getAuthStatus.action\",\"control\":\"https://sosona.com:8443\"}}" var grid map[string]whatBean json.Unmarshal([]byte(tmp), &g...阅读全文

Golang net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"

简述今日用golang开发微信小程序 请求wechat服务接口碰到一个问题记录一下 请求发生了错误 用golang 标准库请求发生了错误 胡乱猜想协议不对 服务器挂了???之后用了postman 工具模拟请求了一下如下 并没有网络错误 此时之前猜想的微信服务器出了问题排除了。最后我仔细看了下请求的日志终于发现了问题 参数之间有了空格 原因参数之间有空格所以才会报net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"总结犯错误到是没什么,低级错误真是害死人,太耽误时间了!!...阅读全文

博文 2019-10-18 19:32:48 aside section ._1OhGeD

[翻译]我其实没办法学 Erlang,因为它不存在,所以我发明了它

这是 Joe Armstrong,Erlang 之父在昨天(2013-01-24)发表在 Erlang 邮件列表里的内容。详细解说了他自己从开始学习编码到发明 Erlang 的整个历史。并且,对如何学习编程;如何成为大牛等一系列热门问题提出了自己的看法。当然,文中槽点无数(包括坚定不移的黑我大PHP)。这也是我觉得有必要翻译出来的原因之一。 由于是发在邮件列表的,所以原文是没有正式的标题的。我从 HN 上抄了这个标题回来。 整体上,虽然是和 Erlang 相关的话题。但是读过之后,会突然领会到 Golang Team 一直以来坚持的一些东西的更深层次的含义。 ————翻译分隔线———— 回到过去…… 当我开始学习编程的时候(1967),我可以在 FORTRAN 和(传说中的)Algol 之间...阅读全文

Goland中html编辑器会提示大括号语法错误

在Gogland的html编辑器中使用go的html模板时候用到的大括号会提示报错,其实是不影响运行的,一直有个疑问有办法让其能识别呢,哎,都是强迫症搞怪,就像下面这种: ![QQ截图20170911172216.png](https://static.studygolang.com/170911/d6946e39e0ea53b531d3143177c7308a.png...阅读全文

windows to go模式下的引导加密的win8系统修复

win8 X64 企业版,系统蓝屏提示“INACCESSABLE_BOOT_DEVICE”,,不想重装;安全模式也是进不去,所以就尝试用系统盘进行系统修复,但是在修复的时候提示说系统盘被加密,需要解锁之后才可以修复 于是就先: manage-bde -unlock -password c: 然后输入密码去解锁,然后要去除加密: manage-bde -off c: 提示解密进行中,然后就回来了,而不是显示进度条,我还以为完成了,于是就退出,结果修复还是提示未解锁 然后想起来应该用status看一下的,于是重新上述步骤;然后还是提示下解密进行中就结束 了,于是就: manage-bde -status 果然看到,还是“转换状态”是解密进行中,于是等待; 就是不知道直接用manage-bde a...阅读全文

博文 2016-01-26 22:00:03 a904254

Golang之定义错误(errors)

基本示例: package main //定义错误 //error 也是个接口 import ( "errors" "fmt" ) var errNotFound error = errors.New("Not found error") func main() { fmt.Printf("error:%v", errNotFound) } 错误处理: package main import ( "fmt" "os" "time" ) type PathError struct { path string op string createTime string message string } func (p *PathError) Error() string { return fmt.S...阅读全文

博文 2018-01-20 08:30:00 pyyu

golang编程之文件操作

操作文件是任何编程语言都绕不过,要掌握一门语言,知道如何操作文件是必不可少的,今天学习了下golang对文件操作的支持。 golang对文件的支持是在os package里。我无意将本文写成官方文档的模样,我只是想讨论如何利用这些接口操作文件。 OPEN 熟悉文件系统的人都知道,open是整个文件系统中最复杂的接口之一。熟悉C语言的都知道,C语言中有open和creat,接口如下: view sourceprint? 1.#include 2.#include 3.#include 4. 5.int open(const char *pathname, int flags); 6.int open(const char...阅读全文

博文 2015-08-25 10:00:02 徐学良

go - 内置基础类型

Go 语言中包括以下内置基础类型: 布尔型:bool 整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint 浮点型:float32 float64 复数型:complex64 complex128 字符串:string 字符型:rune 错误型:error 1. bool类型 关键字: bool 可定义为: true 或者 false 或者 逻辑表达式 var bool1 bool = true var bool2 bool = (2 == 2)注:不能接受其他类型的赋值,包括(0, 1),也不支持自动或强制类型转换 2. 整型 分为有符号与无符号两种 值范围,如: int8 2^8 -128~127, uin...阅读全文

博文 2015-06-17 23:08:08 chuangrain

Golang 基础语法-基本变量(2)

Golang 基础语法-基本变量(2) 变量的零值说明 数值类型变量的零值为 0 布尔类型变量的零值为 false 字符串类型变量的零值为 "” 变量的类型转换语法 golang 中不同类型之间的变量赋值需要显式的转换 //语法格式 T(v) 将 v 转换为 类型 T var i int = 32 var f float64 = float64(i) var u uint = uint(64) 变量的定义(声明) 使用 var 声明无论在函数内还是函数外,都可以使用 var 声明变量 基本语法格式为:var varName varTypevar varName = varValuevar varName1, varName2 varTypevar varName1, varName2 = v...阅读全文

博文 2017-12-06 06:04:45 luxixing

Golang 错误的error处理方式

package main import ( "fmt" "net/http" ) func main() { checkStatus := func(done <-chan interface{}, urls ...string) <-chan *http.Response { responses := make(chan *http.Response) go func() { defer close(responses) for _, url := range urls { resp, err := http.Get(url) if err != nil { fmt.Println(err) continue } select { case <-done: return case resp...阅读全文

博文 2019-06-14 23:32:46 FredricZhu

Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/52743704 声明:这里的测试框架都是很常用的框架,不去跟一些奇葩但是所谓性能极高的框架进行对比 由于我们在项目中大量使用Iris和nginx这两个Web框架(纯Go语言实现,零内存拷贝),同时也听过很多人问Go的Http性能对比nginx、对比nodejs到底如何,有鉴于此,今天我们就来做一个Web框架性能真实比拼。 测试环境图: 下面从多个维度对4个框架进行对比:Nginx VS Nginx-php-fpm VS Iris VS nodejs-Express一、 Nginx 并发压力测试100 - 100K 第一张图是在...阅读全文

博文 2019-03-17 14:05:15 erlib

好程序员:来势汹汹的Go语言企图超越Java?真是高处不胜寒!

|本文由好程序员特训营编辑|作者:好程序员根据近年来TIOBE最受欢迎语言排行榜,我们很容易会发现一个现象:Java语言长盛不衰,多次连续获得最受欢迎语言排行榜第一名,对于很多程序员而言,这似乎已经成为一个习惯,Java也顺理成章的成为很多编程人员学习的首选。但是很多语言的快速崛起,似乎对Java造成了一定的冲击,尤其是go语言,那么go语言能否超越java呢?这要从两个方面来说,一个语言所形成的生态,另外一个是语言本身。从语言的生态来说一旦某个语言在一个领域建立了自己的生态系统那么它的地位几乎很难被撼动了,java语言在大数据、云计算、企业应用方面有了无数的Library、Framework、App,以及会使用这些东西的程序员。撼动这样一个体系无异于连根拔起一颗掺天大树,更聪明的做法应该是...阅读全文

博文 2017-08-22 08:05:00 好程序员特训营

hystrix-go

内部组织了一次关于hystrix-go的分享,没想到引起了内部的困惑,对于没有做过分布式系统的开发同学可能根本没有接触过hystrix,学习一个新东西,我个人的一贯思路是按照黄金圈理论。 这里关于hystrix是什么就不描述了,百度一下足够你翻几屏的了。因为目前Team以golang为主要开发语言,所以使用了开源的hystrix-go(https://github.com/afex/hystrix-go).大家先看下面一个例子:var Number intvar Result stringfunc main() { config := hystrix.CommandConfig{ Timeout:2000, //超时时间设置 单位毫秒 MaxConcurrentRequests:8, //最...阅读全文

博文 2018-07-22 23:34:48 GoSnail

Golang 多goroutine的异步通知错误方法

作者近期在写一个项目时遇到了这样的需求:调用一个库API函数,函数内部又会拉起若干个后台goroutine。这时后台goroutine如果遇到错误想要及时通知库的使用者将不会是一件容易的事情,因为这是一个异步通知错误的方法。作者最终的解决思路是:使用者另启一个goroutine监听Err channel,库后台goroutine出现的错误将直接发送至Err channel中。 作者以自己项目简单举例: func DaemonListen(err <-chan Errsocket){ for { v, ok := <-err if ok { fmt.Println(v) /*处理错误*/ } else { fmt.Println("Listen closed.")/*后台安全退出*/ retu...阅读全文

博文 2019-03-22 17:34:44 Ovenvan

Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

声明:这里的测试框架都是很常用的框架,不去跟一些奇葩但是所谓性能极高的框架进行对比 由于我们在项目中大量使用Iris和nginx这两个Web框架(纯Go语言实现,零内存拷贝),同时也听过很多人问Go的Http性能对比nginx、对比nodejs到底如何,有鉴于此,今天我们就来做一个Web框架性能真实比拼。 测试环境图: 下面从多个维度对4个框架进行对比:Nginx VS Nginx-php-fpm VS Iris VS nodejs-Express一、 Nginx 并发压力测试100 - 100K 第一张图是在不同并发压力下,每秒处理的请求数 第二张是每秒吞吐的数据量 第三张是99.9%、平均、标准方差的延迟统计,可以看出有0.01%的请求延迟在2秒左右 第四张是单线程统计 (这些图后面不会...阅读全文

博文 2016-10-06 14:00:06 abv123456789

Go错误记录

本篇仅是日常开发中出现的错误记录以及解决方法。 1. no new variables on left side of := 错误原因:所使用的变量已经声明过,不能再使用:=赋值。:=仅支持声明的时候赋值。解决方法:使用=赋值。 2. found packages secondpkg (FileDownloader.go) and filedownloader (HttpGetExample.go) in D:\GoLang\src\filedownloader 错误原因:同一目录下面可以包含多个相同包名的.go文件,不能包含多个不同的包名的.go文件。解决方法:将不同包名的.go文件放到不同目录下,管理项目目录。参考:Go项目目录管...阅读全文

博文 2015-01-22 13:00:01 sincerely

让我们一起Go(三)

在前几篇中,我们搭建好了Go语言的开发环境,从今天开始就正式进入Go语言的编程学习了。 一、Go语言程序基本结构与外部包的导入 首先来看Go语言程序的基本结构: 以上就是最基本的结构,主函数中就通过导入的fmt包,调用该包的Printf函数,向控制台打印字符串。 其中import “fmt” 还可以为导入的包指定别名,像下面那样 import format “fmt” 给fmt包取了别名format,这样在调用的时候也相应的改为format.Printf("Hello world!") 那么什么时候需要用到别名?比如,你在程序中刚好使用到了fmt的变量,那么和fmt包名字冲突了,在这种情况下可以使用别名,或者你要导入的两个包正好名字相同,你也可以为其中一个取别名。 当然,最好不要给包取别名,...阅读全文

博文 2015-09-02 14:00:00 a6652162

为什么程序员都不喜欢使用switch而使用if来做条件跳

请用5秒钟的时间查看下面的代码是否存在bug。 OK,熟练的程序猿应该已经发现Bug所在了,在第8行和第10行下面我没有添加关键字break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。缺点一. 语法正确,逻辑错误这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生的事情,而这个语法错误在诸多的语法检查器上没有办法检查出来的,因为从语法角度来说是正确的!可是代码的处理逻辑却是错误的!用if来重写这段代码的话,就不会发生这种错误。 上面的代码为了保证正确我添加了else做一个逻辑上的保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦我忘记写花括号的时候,语法编译器是会提示我添加的,甚至可以...阅读全文

博文 2019-04-27 23:34:44 程序员之言