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

Golang简单写文件操作的四种方法

载别人的代码 http://www.android100.org/html/201407/28/47230.html package mainimport ( "bufio" //缓存IO "fmt" "io/ioutil" //io 工具包 "io" "os" )func check(e error) { if e != nil { panic(e) } }/** * 判断文件是否存在 存在返回 true 不存在返回false */ func checkFileIsExist(filename string) (bool) { var exist = true; if _, err := os.Stat(filename); os.IsNotExist(err) { exist = fal...阅读全文

博文 2014-12-18 18:00:01 bluezwt

golang 创建,读取,写入文件

golang创建文本文件 f,err := os.Create(fileName) defer f.Close() if err !=nil { fmt.Println(err.Error()) } else { _,err=f.Write([]byte("要写入的文本内容")) checkErr(err) } golang读取文本文件 f, err := os.OpenFile(fileName, os.O_RDONLY,0600) defer f.Close() if err !=nil { fmt.Println(err.Error()) } else { contentByte,err=ioutil.ReadAll(f) checkErr(err) fmt.Println(strin...阅读全文

博文 2018-08-13 14:31:34 ILVNMM

golang追加写入文件

所有语言你想调试都可以下断言调试,当然也可以输出到日志文件中,此函数方便集成到你的项目中。//打印内容到文件中 //tracefile(fmt.Sprintf("receive:%s",v)) func tracefile(str_content string) { fd,_:=os.OpenFile("a.txt",os.O_RDWR|os.O_CREATE|os.O_APPEND,0644) fd_time:=time.Now().Format("2006-01-02 15:04:05"); fd_content:=strings.Join([]string{"======",fd_time,"=====",str_content,"\n"},"") buf:=[]byte(fd_con...阅读全文

博文 2016-11-01 17:00:01 e421083458

go生成csv

package main import ( "encoding/csv" "os" ) func main() { f, err := os.Create("test.csv")//创建文件 if err != nil { panic(err) } defer f.Close() f.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM w := csv.NewWriter(f)//创建一个新的写入文件流 data := [][]string{ {"1", "中国", "23"}, {"2", "美国", "23"}, {"3", "bb", "23"}, {"4", "bb", "23"}, {"5", "bb", "23"}, } w.WriteAll(d...阅读全文

博文 2014-10-04 19:26:36 别人说我名字很长

go调用exe

//调用exe func callEXE1() { arg := []string{} cmd := exec.Command("test", arg...) //会向 cmd.Stdout和cmd.Stderr写入信息,其实cmd.Stdout==cmd.Stderr,具体可见源码 output, err := cmd.CombinedOutput() if err != nil { fmt.Println("Error:", err) return } fmt.Printf("callEXE2结果:\n%v\n\n%v\n\n%v", string(output), cmd.Stdout, cmd.Stderr) } func callEXE2() { arg := []string{}...阅读全文

博文 2014-10-04 19:26:36 陈好

golang连接kafka

golang连接kafka的例子好少,而支持offset追踪者更少,但也是基础的要求。”github.com/bsm/sarama-cluster”结合“github.com/Shopify/sarama”满足了此要求。 环境: golang 1.7 kafka 0.10 centos7.2 package main import ( "fmt" "os" "strings" "time" "github.com/Shopify/sarama" "github.com/bsm/sarama-cluster" //support automatic consumer-group rebalancing and offset tracking "github.com/golang/glog" )...阅读全文

博文 2016-11-05 03:00:01 dazheng

Excelize - Golang 操作 Office Excel 文档类库

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github.com/Luxurioust/excelize" ) func main() { xlsx := excelize.CreateFile() // Create a new sheet. xlsx.N...阅读全文

博文 2017-03-20 08:39:16 xuri

Golang使用CSV读取、导出文件

导出csv文件 func WriteCsv() { //创建文件 f, err := os.Create("test.csv") if err != nil { panic(err) } defer f.Close() // 写入UTF-8 BOM f.WriteString("\xEF\xBB\xBF") //创建一个新的写入文件流 w := csv.NewWriter(f) data := [][]string{ {"1", "刘备", "23"}, {"2", "张飞", "23"}, {"3", "关羽", "23"}, {"4", "赵云", "23"}, {"5", "黄忠", "23"}, {"6", "马超", "23"}, } //写入数据 w.WriteAll(data)...阅读全文

博文 2020-03-25 23:32:48 是个懒人

golang log日志

写入日志文件 func main() { file, err := os.Create("test.log") if err != nil { log.Fatalln("fail to create test.log file!") } logger := log.New(file, "", log.Llongfile) // 写入文件log格式:/Users/zhou/go/src/zhouTest/test.go:22: 2.Println log with log.LstdFlags ... logger.Println("2.Println log with log.LstdFlags ...") logger.SetFlags(log.LstdFlags) // 设置写入文件的lo...阅读全文

博文 2018-08-05 00:30:02 zhzhlong

golang 文件(文件打开,文件写入,文件读取,文件删除)的基本操作

代码如下 复制代码 package main import ( "bufio" //缓存IO "fmt" "io/ioutil" //io 工具包 "io" "os" ) func check(e error) { if e != nil { panic(e) } } /** * 判断文件是否存在 存在返回 true 不存在返回false */ func checkFileIsExist(filename string) (bool) { var exist = true; if _, err := os.Stat(filename); os.IsNotExist(err) { exist = false; } return exist; } /** from: http://www.ish...阅读全文

博文 2016-02-23 03:00:01 moontower

golang按行写文件

将map[string]string写入文件 func WriteMaptoFile(m map[string]string, filePath string) error { f, err := os.Create(filePath) if err != nil { fmt.Printf("create map file error: %v\n", err) return err } defer f.Close() w := bufio.NewWriter(f) for k, v := range m { lineStr := fmt.Sprintf("%s^%s", k, v) fmt.Fprintln(w, lineStr) } return w.Flush() ...阅读全文

博文 2016-03-14 17:00:01 xielingyun

使用Go语言画图,基础图

这个事例使用了一个简单的画图,并将其写入到http的包里面,只需几步, 打开http://localhost:999/即可看到, 其它还在研究当中, 研究出来自然跟大家分享. package main import ( "image" "image/color" "image/draw" "image/png" "net/http" ) var ( blue color.Color = color.RGBA{0, 0, 255, 255} picwidth int = 640 picheight int = 480 ) // 大家可以查看这个网址看看这个image包的使用方法 http://golang.org/doc/articles/image_draw.html func main()...阅读全文

博文 2015-06-17 23:02:39 movoco

用golang的编译build生成的.exe文件秒关闭

求个大牛帮忙新手解决个build的小问题,在window下用golang的build编译生成的.exe文件后,在window桌面下双击这个.exe文件后,会秒关闭掉。代码目的是想把一个html文件写入到go的buff里面,然后直接编译。不知道我这样做的对不对,也不知道秒关的原因是什么 求个大神帮忙解决下 谢谢...阅读全文

golang log日志,错误信息写入文件,创建目录,追加写入

目的: 错误日志写入到文件里面 日志文件夹是否存在,创建日志目录 日志文件是否存在,创建日志文件 文件权限 追加写入 package main import ( "io" "os" "time" ) const ( //LOGPATH LOGPATH/time.Now().Format(FORMAT)/*.log LOGPATH = "log/" //FORMAT . FORMAT = "20060102" //LineFeed 换行 LineFeed = "\r\n" ) //以天为基准,存日志 var path = LOGPATH + time.Now().Format(FORMAT) + "/" //WriteLog return error func WriteLog(fileNam...阅读全文

博文 2019-07-25 13:32:40 steve_ji

Golang 复制文件的三种做法

主要介绍三种复制文件的方法: 使用io.Copy()方法 一次性读取输入文件,然后再一次性写入目标文件 使用buffer一块块地复制文件 方法一 : 使用io.Copy func copy(src, dst string) (int64, error) { sourceFileStat, err := os.Stat(src) if err != nil { return 0, err } if !sourceFileStat.Mode().IsRegular() { return 0, fmt.Errorf("%s is not a regular file", src) } source, err := os.Open(src) if err != nil { return 0, err...阅读全文

博文 2019-03-11 11:34:42 Chole121

golang 阻塞的坑

1、写go程序的时候一定要牢记主线程不能阻塞,一旦阻塞就崩溃,就怕那种某种情况下偶尔会出现几下阻塞的,一定要杜绝。2、select case的执行顺序是乱的,不确定的3、写入管道的时候,一定要保证管道没有被阻塞写否则会崩溃,读取阻塞管道的时候关闭管道会读取到一个0值和一个false ok...阅读全文

博文 2016-02-18 03:00:00 anjianliang

golang map性能测试

golang map是golang的方便操作的key-value package main import ( "fmt" "math/rand" "time" _"strconv" ) var x = make(map[int]int, 100000001) //var x = make(map[string]string, 100000001) func main() { ttime := time.Now().UnixNano() //x := make(map[int]int, 100000001) //x := [100000001]int{} fmt.Printf("len x %d \n", len(x)) for i := 1; i < 100000001; i++ { x[r...阅读全文

博文 2015-10-24 13:00:08 webyh

golang学习的点点滴滴:并发超时处理

golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。 原理: 并发一个函数,等待1s后向timeout写入数据,在select中如果1s之内有数据向其他channel写入则会顺利执行,如果没有,这是timeout写入了数据,则我们知道超时了。 package main import "fmt" import "time" func main() { ch := make(chan int, 1) timeout := make(chan bool, 1) // 并发执行一个函数,等待1s后向timeout写入true go func() { time.Sleep(1000) timeout <- true }() // 这里会等待ch或timeout读出数据 // 因为...阅读全文

博文 2014-10-04 19:27:21 亓斌哥哥

golang 实现对excel的操作

读excel操作 import ( "fmt" "github.com/tealeg/xlsx" ) func main() { excelFileName := "这里是excel的路径" xlFile, error := xlsx.OpenFile(excelFileName) if error != nil { ... } for _, sheet := range xlFile.Sheets { for _, row := range sheet.Rows { for _, cell := range row.Cells { fmt.Printf("%s\n", cell.String()) } } } } 123456789101112131415161718 import ( "...阅读全文

博文 2017-02-10 12:23:35 谢权

Go:操作注册表

package main import ( "fmt" "log" "golang.org/x/sys/windows/registry" ) func main() { key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Hello Go", registry.ALL_ACCESS) if err != nil { log.Fatal(err) } defer key.Close() if exists { fmt.Println("键已存在") } else { fmt.Println("新建注册表键") } // 写入32位整形值 key.SetDWordValue("DWORD", 0xFF...阅读全文

博文 2016-09-21 01:00:00 aqtata

[Go语言]Windows下的注册表操作

我编写了一个包,可以操作注册表。 github.com/jthmath/winapi/reg 目前只能写入值,所以充其量算0.1版,或者说只是一个例子。以后我将逐步完善它。 package main import ( "fmt" "github.com/jthmath/winapi/reg" ) const SubKey string = "software\\123" func main() { var err error Key, _, err := reg.CreateKey( reg.HKEY_CURRENT_USER, // 项 SubKey, // 子项 0, // 保留,必须是零 "", // class,暂时不填 reg.REG_OPTION_NON_VOLATILE, //...阅读全文

博文 2015-06-17 23:07:24 jthmath

golang for-select 优雅的退出

启动两个做为生产者的go-routing, 分别将数据生产的数据写入两个带缓冲的通道cha1,ch2 分别模拟在Main go-routing和 sub go-routing中通过for-select循环读取两个通道的值并打印 通过3种方式优雅的退出main go-routing exit for-select in go-routing https://play.golang.org/p/Ar4389-87QE package main import ( // "time" "fmt" ) func produce(id int, ch chan string, quitSub chan int){ for i:=0;i< 10;i++{ ch <- fmt.Sprintf("msg:%d...阅读全文

博文 2020-05-21 19:32:47 夜空一起砍猩猩

go语言的文件操作

简单谈一下go语言文件操作的几种方式 package main import ( "bufio" //缓存IO "fmt" "io" "io/ioutil" //io 工具包 "os" ) func check(e error) { if e != nil { panic(e) } } /** * 判断文件是否存在 存在返回 true 不存在返回false */ func checkFileIsExist(filename string) bool { var exist = true if _, err := os.Stat(filename); os.IsNotExist(err) { exist = false } return exist } /** from: http://www...阅读全文

博文 2019-05-24 01:35:09 qq5c9c828bc8d4b

Go:操作注册表

package main import ( "fmt" "log" "golang.org/x/sys/windows/registry" ) func main() { key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Hello Go", registry.ALL_ACCESS) if err != nil { log.Fatal(err) } defer key.Close() if exists { fmt.Println("键已存在") } else { fmt.Println("新建注册表键") } // 写入32位整形值 key.SetDWordValue("DWORD", 0xFF...阅读全文

博文 2016-08-23 13:00:03 aqtata

golang对.xlsx文件的写入和读取,利用第三包github.com/tealeg/xlsx

``` package main import ( "fmt" "github.com/tealeg/xlsx" ) type Member struct { Name string `xlsx:"0"` Age int `xlsx:"1"` } func main() { WriteToXlsx() ReadXlsx() } //把Member结构的数据写入到.xlsx文件当中 func WriteToXlsx() { var file *xlsx.File var sheet *xlsx.Sheet var row *xlsx.Row var err error file = xlsx.NewF...阅读全文

go语言导出内容到excel

package main import ( "os" "encoding/csv" ) func main() { f, err := os.Create("haha2.xls") if err != nil { panic(err) } defer f.Close() f.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM w := csv.NewWriter(f) w.Write([]string{"编号","姓名","年龄"}) w.Write([]string{"1","张三","23"}) w.Write([]string{"2","李四","24"}) w.Write([]string{"3","王五","25"}) w.Write([]stri...阅读全文

博文 2015-06-17 23:07:24 abao2123

golang中使用MD5加密的两种方法

package main import ( "crypto/md5" "fmt" "io" ) func main() { str := "abc123" //方法一 data := []byte(str) has := md5.Sum(data) md5str1 := fmt.Sprintf("%x", has) //将[]byte转成16进制 fmt.Println(md5str1) //方法二 w := md5.New() io.WriteString(w, str) //将str写入到w中 md5str2: = fmt.Sprintf("%x", w.Sum(nil)) //w.Sum(nil)将w的hash转成[]byte格式 fmt.Println(mdtstr2) } 打印结果...阅读全文

博文 2017-03-05 13:56:04 skh2015java

请问Go中的Channel可不可以在不写入数据的情况下判断是否可写?

小白求解。。。 类似的,还有在不执行读取动作的前提下能否判断一个channel是否可读? 我不想用select case因为那样一旦判断可写/读的话这个读写操作就事实上产生了。我需要等待两个channel同时可读的时候再将它们的值同时读出来。。...阅读全文

操作 Office Excel 文档类库 Excelize

![image](http://studygolang.qiniudn.com/170326/a71ba93152df4e9ba1d658df14b26633.png) Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入带有图表的文档,并且在保存后不会丢失图表样式。 安装

go get github.com/Luxurioust/excelize
创建 XLSX
阅读全文

Go语言实现日志系统

package main import ( "errors" "fmt" "os" ) func main() { // 准备日志器 l := createLogger() // 写一个日志 l.Log("hello") } // 创建日志器 func createLogger() *Logger { // 创建日志器 l := NewLogger() // 创建命令行写入器 cw := newConsoleWriter() // 注册命令行写入器到日志器中 l.RegisterWriter(cw) // 创建文件写入器 fw := newFileWriter() // 设置文件名 if err := fw.SetFile("log.log"); err != nil { fmt.Print...阅读全文

博文 2019-12-27 19:33:11 huang_he_87

go语言csv文件的读取与写入

go语言csv文件的读取 暂时未整理 package main import ( "encoding/csv" "fmt" "io" "log" "os" ) func main() { //准备读取文件 fileName := "D:\\gotest\\src\\source\\test.csv" fs, err := os.Open(fileName) if err != nil { log.Fatalf("can not open the file, err is %+v", err) } defer fs.Close() r := csv.NewReader(fs) //针对大文件,一行一行的读取文件 for { row, err := r.Read() if err != nil ...阅读全文

博文 2019-05-31 13:35:14 qq5c9c828bc8d4b

关于官网二叉树的实现的困惑。

关于官方的二叉树的经典实现的。如下: ![1.png](http://studygolang.qiniudn.com/160804/3ea70c159dc41eeab7204d51b96505a5.png) ![2.png](http://studygolang.qiniudn.com/160804/0504f939c17106cb7ae36e42f92098c7.png) 如果有二叉树a,b,b和a的差别就是b的节点 比a多,那a使用的管道能正常关闭,b的使用管道何时关闭?b所在的goroutine何时释放? 个人认为如果出现不匹配,则始终会有管道和goroutine没有释放。 如果要释放资源,目前能想到的办法是给Walker中多传入一个flag管道判断是否需要释...阅读全文

golang -- channel使用

Channel 重复关闭channel ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了channel close(ch) i := <- ch //不会panic, 但是i读取到的是零值(""/false/nil) 向已经关闭的channel写数据 ch := make(chan string) close(ch) ch <- "test" //会panic 判断channel是否close i, ok := <- ch if ok { println(i) } else { println("channel closed") } for循环读取channel ...阅读全文

博文 2014-10-04 19:26:56 flyking

读取写入tar/zip文件(go语言)

1.读取写入tar文件 package main import ( "archive/tar" "fmt" "os" "bufio" "io" ) func readFile(path string) string{ var content string = "" file,err := os.Open(path) if err != nil{ fmt.Printf("%v",err) return "" } defer file.Close() inputReader := bufio.NewReader(file) for{ inputString,err := inputReader.ReadString('\n') content += inputString if err == i...阅读全文

博文 2016-02-19 09:00:00 rongyongfeikai2

关于chan的一点疑惑,望大家解答,谢谢!

1、在一次循环中生成了很多个chan, 那么在循环结束时是否要关闭这些chan, 如不关闭会造成资源泄漏么? 2、多个协程 对一个 chan 写入, 一个协程读取此chan中的内容, 如果突然关闭此chan 就会造成已启动的多个写协程 对已关闭的chan写操作导致的崩溃, 如何避免这种情况...阅读全文

golang fasthttp上传文件client和server教程

server端实现: package main import ( "fasthttp" "io" "os" ) func main(){ fasthttp.ListenAndServe(":8080",UploadHandler) } func UploadHandler(ctx *fasthttp.RequestCtx){ //根据参数名获取上传的文件 fileHeader,err := ctx.FormFile("file") if err != nil{ ctx.WriteString(err.Error()) return } //打开上传的文件 file,err := fileHeader.Open() if err != nil{ ctx.WriteString(err.Erro...阅读全文

博文 2019-07-02 21:32:40 聆行

Golang简单写文件操作的四种方法

package main import ( "bufio" "fmt" "io" "io/ioutil" "os" ) func check(e error){ if e != nil { panic(e) } } // 判断文件是否存在,存在返回 true 不存在 false func checkFileIsExist(filename string) bool { var exist = true if _, err := os.Stat(filename);os.IsNotExist(err){ exist = false } return exist } func main(){ var wireteString = "测试" var filename = "./output1.tx...阅读全文

博文 2019-11-18 13:32:50

golang实现文件copy

package main import ( "fmt" "io" "os" ) func main() { //打开源文件 sFile,err := os.Open("C:/GoProject/file/helloworld.txt") defer sFile.Close() if err !=nil{ fmt.Println("os.Open err = ",err) return } //创建目标文件 tFile,err := os.Create("C:/GoProject/file/helloworld_copy.txt") defer tFile.Close() if err !=nil{ fmt.Println("os.Create err= ",err) } //循环读取文件,写...阅读全文

博文 2019-07-22 16:32:42 七八个星天

golang 文件操作

golang 文件操作 获取文件大小 "path/filepath" import ( "path/filepath" ) func GetFileSize(filename string) int64 { var size int 64 filepath.Walk(filename, func(path string, f os.FileInfo, err error) error { if err != nil{ return err }else{ result = f.size(); return nil } }) return result; } 读取文件 import ( "fmt" "os" ) func ReadFile(){ filePath := './data.json'...阅读全文

博文 2019-08-23 10:33:03 直立猿

Go语言Select的理解

package main import "time" import "fmt" func main() { // 本例中,我们从两个通道中选择 c1 := make(chan string) c2 := make(chan string) // 为了模拟并行协程的阻塞操作,我们让每个通道在一段时间后再写入一个值 go func() { time.Sleep(time.Second * 1) c1 <- "one" }() go func() { time.Sleep(time.Second * 2) c2 <- "two" }() // 我们使用select来等待这两个通道的值,然后输出 select { case msg1 := <-c1: fmt.Println("received", ...阅读全文

博文 2016-10-11 08:00:03 tree2013

go 语言http请求案列。

go 语言请求,小案列get与post: package main import( "fmt" "net/http" "io/ioutil" "strings" "os" "io" ) func main() { httpGet() content:=httpPostParmas() savaFile(content) } func httpGet() { resp,err :=http.Get("http://www.baidu.com") if err!=nil { fmt.Println("已经初始化") } defer resp.Body.Close() body,err:=ioutil.ReadAll(resp.Body) if err!=nil { fmt.Println("从i...阅读全文

博文 2016-11-13 14:00:02 qq_26337701

装个go1.14吧

wget https://studygolang.com/dl/golang/go1.14.2.linux-amd64.tar.gz tar -zxvf go1.14.2.linux-amd64.tar.gz -C /usr/local/ 写入/etc/profile export GOROOT=/usr/local/go export GOPATH=/var/www/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin export GO111MODULE=on export GOPROXY=https://goproxy.cn export LD_LIBRARY_PATH=/usr/local/li...阅读全文

博文 2020-05-11 19:32:46 耗子_aca3