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

Golang 逐行读取文件

golang的错误处理有点奇怪. 插入代码时候, 使用插入代码(推荐) 出现错误: 无法解析服务器的 DNS 地址。 使用插入代码, 直接是文本插入, 连着色都没有. 插入图片要地址, 不能上传. 下载客户端, 转到微软的网站时已经是: We can’t find that page. 写个博客都这么难比较失望. package jutil import ( "bufio" "io" "os" "strings" ) func ReadLine(fileName string, handler func(string)) error { f, err := os.Open(fileName) if err != nil { return err } buf := bufio.NewReade...阅读全文

博文 2015-02-24 03:00:00 zoltun

golang 读取配置文件

unix 风格的配置文件 [default] path= c:/go version = 1.44 [test] num = 666 something = wrong #注释1 #fdfdfd = fdfdfd 注释整行 refer= refer //注释3 config.go package conf import ( "bufio" "io" "os" "strings" ) const middle = "=========" type Config struct { Mymap map[string]string strcet string } func (c *Config) InitConfig(path string) { c.Mymap = make(map[string]...阅读全文

博文 2015-06-18 17:04:36 u014798316

关于GOLANG的chan

GOLANG CHAN chan是golang中非常重要的一个东西,用来做goroutine的通信,因为golang程序必然会有多个goroutine,如何同步这些goroutine就很重要了。 使用chan时有几个心得: 首先,永远是符号<-进行读取或者写入,譬如v,ok := <-c是读取,而c <- v是写入。 其次,读取时,如果没有ok,也是可以读取的。不过如果closed也是能读的,没有赋值而已;如果要知道是否closed得加ok,也就是除非chan永远不关闭,否则读取应该用v,ok := <-c而不是用v := <-c的方式。 再次,不能向closed的chan写入,所以一般写入时需要用一个信号的chan(一般buffer为1),来判断是否写入或者放弃,用select判断是写入成...阅读全文

博文 2016-08-17 14:00:03 winlinvip

GO语言运行cmd命令逐行实时输出执行过程

Golang运行cmd命令逐行实时输出执行过程,注意,不是一次输出所有的内容,而是按照执行的过程,逐行逐行的实时显示出来 代码如下: package main import ( "bufio" "fmt" "io" "os/exec" ) func main() { command := "ls" params := []string{"-l"} //执行cmd命令: ls -l execCommand(command, params) } func execCommand(commandName string, params []string) bool { cmd := exec.Command(commandName, params...) //显示运行的命令 fmt.Println(...阅读全文

博文 2015-06-17 23:07:41 windvix

Golang http 超时设置方法

c := http.Client{ Transport: &http.Transport{ Dial: func(netw, addr string) (net.Conn, error) { deadline := time.Now().Add(25 * time.Second) c, err := net.DialTimeout(netw, addr, time.Second*20) if err != nil { return nil, err } c.SetDeadline(deadline) return c, nil }, }, } c.Get("http://www.qq.com") ////////////////////////////////////////////// /...阅读全文

博文 2015-02-28 09:31:57 nulijiabei

Go语言 Cookie的使用

首先看看Cookie的结构体 type Cookie struct { Name string Value string Path string // optional Domain string // optional Expires time.Time // optional RawExpires string // for reading cookies only // MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0' // MaxAge>0 means Max-Age attribute present and ...阅读全文

博文 2016-02-01 17:00:01 project

golang 逐行读取文件

package main import ( "bufio" "fmt" "io" "os" ) func main() { fi, err := os.Open("C:/Documents and Settings/xxx/Desktop/tax.txt") if err != nil { fmt.Printf("Error: %s\n", err) return } defer fi.Close() br := bufio.NewReader(fi) for { a, _, c := br.ReadLine() if c == io.EOF { break } fmt.Println(string(a)) } } ================一次性读取=================...阅读全文

博文 2015-04-07 14:00:00 rojas

golang读取json配置文件

test_json.go: package main import ( io "io/ioutil" json "encoding/json" "fmt" ) type JsonStruct struct{ } func NewJsonStruct () *JsonStruct { return &JsonStruct{} } func (self *JsonStruct) Load (filename string, v interface{}) { data, err := io.ReadFile(filename) if err != nil{ return } datajson := []byte(data) err = json.Unmarshal(datajson, v) if ...阅读全文

博文 2015-10-14 17:00:02 徐学良

Go实战--golang中读写文件的几种方式

生命不止,继续 go go go !!! 读写文件应该是在开发过程中经常遇到的,今天要跟大家一起分享的就是在golang的世界中,如何读写文件。 使用io/ioutil进行读写文件 先回忆下之前的ioutil包介绍: Go语言学习之ioutil包(The way to go) 其中提到了两个方法: func ReadFile func ReadFile(filename string) ([]byte, error) ReadFile reads the file named by filename and returns the contents. A successful call returns err == nil, not err == EOF. Because ReadFile ...阅读全文

博文 2017-08-03 06:31:02 wangshubo1989

golang 标准库io/ioutil,读取文件,生成临时目录/文件

1.读取目录 list, err := ioutil.ReadDir("DIR")//要读取的目录地址DIR,得到列表 if err != nil { fmt.Println("read dir error") return } for _, info := range list { //遍历目录下的内容,获取文件详情,同os.Stat(filename)获取的信息 info.Name()//文件名 info.Mode()//文件权限 info.Size()//文件大小 info.ModTime()//文件修改时间 info.Sys()//系统信息 if info.IsDir() == true { fmt.Println("是目录") } } 2.读取文件 data, err := iou...阅读全文

博文 2015-03-23 14:00:00 benlightning

go struct变量定义之后` `符号是什么意思?

刚接触go,看到如下代码 比如 ```go type user struct{ name string `default:xxx` } ``` 上面 \`default:xxx\` 看起来是设置初始化默认值,但是我试着 fmt.Println(user{}) 发现打印的是{}, 也就是没有初始化。语法定义上也没有找到对\` \`符号的定义,理论上这应该是非法字符吧,编译也不会通过。我猜应该是什么工具读取了\` \`里的内容然后初始化了结构体吧,请问是什么工具,为什么\`\`里面的内容语法不报错呢?官方文档没找到对\` \`使用的解...阅读全文

golang读取文件编码转换问题

首先导入包 "code.google.com/p/mahonia" 可以通过此链接获得此包 https://code.google.com/p/mahonia/ 参考代码如下: package main import ( "bufio" "code.google.com/p/mahonia" "log" "os" "strings" "time" ) func main() { //创建日志文件 t := time.Now() filepath := "./log_" + strings.Replace(t.String()[:19], ":", "_", 3) + ".txt" file, err := os.OpenFile(filepath, os.O_CREATE, 0666) if...阅读全文

博文 2014-10-04 19:27:08 xlplbo

golang mongodb mgo 插入,查询例子

golang mongodb mgo 插入,查询的一个小例子,golang还是给我那个感觉,比nodejs写起来舒服. package main import ( "fmt" "launchpad.net/mgo" "launchpad.net/mgo/bson" ) type Mail struct { Id bson.ObjectId "_id" Name string Email string } func main() { // 连接数据库 session, err := mgo.Dial("127.0.0.1") if err != nil { panic(err) } defer session.Close() // 获取数据库,获取集合 c := session.DB("tes...阅读全文

博文 2014-10-05 00:00:01 DarkWingBoy

分布式文件系统 SeaweedFS

SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是 "NoFS"。 SeaweedFS 仅花费 40 字节的硬盘来存储每个文件的元数据。 基准测试基于 Mac Book,固态硬盘,CPU:1 Intel Core i7 2.6GHz。 编写 1 百万的 1KB 文件:

Concurrency Level:      16
Time taken for tests:   88.796 seconds
Complete requests:  ...阅读全文

golang从stdin中读取一行

本文转自life的leanote博客: http://leanote.com/blog/view/531706971a91084358000000 fmt.Scanln()不是读取一行, 而是遇到换行就停止, Scanln is similar to Scan, but stops scanning at a newline and after the final item there must be a newline or EOF. 举个例子: var i, j, k int fmt.Scanln(&i, &j, &k) fmt.Println(i, j, k) 输入1, 2 回车后程序结束. 如果换成fmt.Scan()还会让输入的. 使用stdin与reader联合起来读一行数据: ...阅读全文

博文 2014-10-04 19:26:59 lifephp

基于 Golang 的 xls 读取类库:xls

Golang 编写的 xls 读取类库,能够实现 xls 表格的读取功能 func (w *WorkBook) ReadAllCells() (res [][]string) { for _, sheet := range w.Sheets { w.PrepareSheet(sheet) if sheet.MaxRow != 0 { temp := make([][]string, sheet.MaxRow+1) for k, row := range sheet.Rows { data := make([]string, 0) if len(row.Cols) > 0 { for _, col := range row.Cols { if uint16(len(data)) <= col....阅读全文

博文 2015-10-24 03:00:00 zhuiluoyu

golang的channel的几种用法

关闭2次 ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool的,那么读取到的是false 向已经关闭的channel写数据 ch := make(chan string) close(ch) ch <- "good" // 会panic的 判断channel是否close i, ok := <- ch if ok { println(i) } else { println("channel clos...阅读全文

博文 2015-05-29 03:00:00 ghj1976

golang: multiple http.writeHeader calls

背景: golang的http服务,读取文件,提供给client下载时候。 出现 multiple http.writeHeader calls 错误。 func DownloadFile(w http.ResponseWriter, r *http.Request, sequence uint64, userid string) { userkey := userid filename := r.FormValue("filename") if len(userkey) <= 0 || len(filename) <= 0 { //........ } fp := fmt.Sprintf("%s%s/%s", g_sc.Rootdir, userkey, filename) fd, err...阅读全文

博文 2015-02-27 03:00:01 zhangqingping

Go channel

// xuhh_go_channel project main.go /* channel 1. channel 在读取数据的时候,如果此时通道内没有数据,则会阻塞。 在取数据的时候,如果此时通道内没有数据,则也会阻塞。 2. channel 在创建的时候会存在一个数据缓冲,如果通道内存入的数据超过缓冲,则就会崩溃。 range 在遍历 channel 的时候需要注意的问题: 1. range在遍历channel的时候,一直在运行,直到close(channel)的时候才会结束调用。 2. range会一直读取数据,如果没有数据,就会阻塞在那里。 len(channel):channel内未被读取的len cal(channel):channel的容量 select机制 : 1. 检查每个c...阅读全文

Golang 文件读写之 os, bufio, io/ioutil 初体验

package main import ( //"bufio" "fmt" //"io" "io/ioutil" "os" "time" ) func main() { file1, err := os.OpenFile("hehehe.txt", os.O_RDWR|os.O_APPEND|os.O_CREATE, os.ModeType) if err != nil { panic(err) } defer file1.Close() // 往创建的文件中写入字符 //_, err = file1.WriteString("aaaaa\r\nbbbbb\r\ncccccc") //if err != nil { // panic(err) //} // A。 使用 bufio按行读取文件...阅读全文

博文 2014-10-09 16:00:02 hotkit

go 读取文件, 最后有没有换行符

package main import ( "fmt" "bufio" "os" "strings" // "encoding/json" ) func main(){ file, err := os.Open("u8_menu_872") defer func() { err := file.Close() if err != nil { //_ = log.Error(err) fmt.Println(err) } }() if err != nil { panic(err) } buff := bufio.NewReader(file) // 读入缓冲区 // cnt := 0 for { str, err := buff.ReadString('\n') //fmt.Println(...阅读全文

博文 2015-11-28 13:00:00 woquNOKIA

GO语言练习:channel select 超时机制

1、代码 2、运行 3、解析 1、代码 1 package main 2 3 import ( 4 "time" 5 "fmt" 6 ) 7 8 func waitFor(ch chan int) { 9 fmt.Println(time.Now(), "writing ...") 10 time.Sleep(1e9) 11 ch <- 10 12 fmt.Println(time.Now(), "wrote ...") 13 } 14 15 func main() { 16 var a chan int = make(chan int) 17 var b chan int = make(chan int) 18 var ch chan int = make(chan int) 19 20 ...阅读全文

博文 2015-07-19 03:00:02 fengbohello

golang的template试水

解析xml生成相应的java文件 package gsxdb import ( "io" "ron.zhang/util/file" "ron.zhang/util/str" "text/template" ) //xbean的模板 var xbeanTmplate = ` package xbean; import xdb.Bean; public class {{.Name }}Stub extends XbeanAdaptor<{{.Name}}> implements Bean { {{range $index,$V:=.Attributes }} private {{.Des }} {{$index}} ;{{print "\n"}} {{end}} {{range $index,...阅读全文

博文 2014-10-04 19:26:15 ronzhang-536

p12转PEM供golang APNS使用

package main import ( "crypto/tls" "fmt" ) func main() { //LoadX509KeyPair读取并分析一个公用/私有密钥对从一对文件。该文件必须包含PEM编码数据。 _, err := tls.LoadX509KeyPair("./cert_dist.pem", "./key_dist2.pem") fmt.Println(err) //X509KeyPair解析一个公共/私有密钥对从一对PEM编码数据。 // _, err = tls.X509KeyPair(privateKey, publicKey) // fmt.Println(err) } //一、通过P12生成临时文件cert.pem // openssl pkcs12 -c...阅读全文

博文 2015-03-19 11:00:01 liaojie

Golang-设置系统时间

// 接收UDP时间广播,并设置系统时间 func (sl *Slaver) masTimeSync(ch chan int) { // 开始监听广播时间 log.Printf("time sync listen [%s]", sl.Node.Port.PortUdpSlaTimeSync) for { (func() { // 监听 mas 发来的同步时间 lis, err := socket.NewListen("", sl.Node.Port.PortUdpSlaTimeSync, 3).ListenUDP() // 判断监听是否建立成功 if err != nil { // 异常抛出 log.Fatalln(err) } // 保证监听正常关闭 defer lis.Close() /...阅读全文

博文 2015-03-03 21:41:22 nulijiabei

beego框架下无法读取中文cookie

使用场景是应用在登录界面 当用户名为纯英文时,一切正常 当用户名为中文时 经测试排查 1、可以在浏览器开发工具中看到中文cookie,也就是beego成功将中文写入cookie 2、在读取时,读取到的为空(如果是英文就可以读取到) 使用的是Ctx.SetCookie 和 Ctx.GetCookie 请大家帮忙指点一...阅读全文

go学习笔记_Routine和Channel下

go语言并发编程下 上文从基础层面讲解了goroutine 和 channel ,关于如何使用都停留下嘴皮子上,因此下篇选用几个最简单的例子来巩固下。另外推荐下自己的个人博客,你可以先点进行看下内容是否对您有帮助,在选择收藏或者直接x掉。 个人博客地址:Colourful Code 正文 首先,上文说到channel 有两种情况: 未分配缓存 分配一定缓存 例子从这两点入手给出。 未分配缓存 package main import "fmt" //求和函数sum func sum(a []int,c chan int){ sum :=0 for _,v := range a{ sum += v } c<-sum //向通道c 写入数据值 sum } //主程序入口 func main(){ ...阅读全文

博文 2015-04-25 22:00:05 colouful987

golang轮询机制select的理解

func main() { c := make(chan int) quit := make(chan int) go func() { for i := 0; i < 10; i++ { fmt.Println(<-c) } quit <- 0 }() fibonacci(c, quit) } //select的轮询机制 func fibonacci(c chan int, quit chan int) { x, y := 0, 1 for { select { // select轮询机制 case c <- x: x, y = y, x+y case <-quit: fmt.Println("quit") return } } } main中执行fibonacci函数时候,select有...阅读全文

博文 2015-07-24 16:00:01 webyh

golang中channel的超时处理

并发中超时处理是必不可少的,golang没有提供直接的超时处理机制,但可以利用select机制来解决超时问题。 func timeoutFunc() { //首先,实现并执行一个匿名的超时等待函数 timeout := make(chan bool, 1) go func() { time.Sleep(1e9) //等待1秒钟 timeout <- true }() //然后,我们把timeout这个channel利用起来 select { case <- ch: //从ch中读到数据 case <- timeout: //一直没有从ch中读取到数据,但从timeout中读取到数据 } ...阅读全文

博文 2016-04-10 11:00:12 xjshi

go 语言zip压缩包 读取

今天看了一下go语言的zip压缩包的操作。 每天看一点go的包,动手写几个例子感觉还是有点收获的,多动手才能有所进步。 先附上代码。testzip.go package main import ( "archive/zip" "bufio" "fmt" "io" "os" ) func main() { rc, err := zip.OpenReader("test/hello.zip") if err != nil { defer rc.Close() } for _, _file := range rc.File { fmt.Println(_file.Name) f, _ := _file.Open() desfile, err1 := os.OpenFile(_file.Name, ...阅读全文

博文 2015-03-03 14:00:00 king1076

go语言键盘输入(摘自the-way-to-go)

我们如何读取用户的键盘(控制台)输入呢?从键盘和标准输入 `os.Stdin` 读取输入,最简单的办法是使用 `fmt` 包提供的 Scan 和 Sscan 开头的函数。请看以下程序: ```go // 从控制台读取输入: package main import "fmt" var ( firstName, lastName, s string i int f float32 input = "56.12 / 5212 / Go" format = "%f / %d / %s" ) func main() { fmt.Println("Please enter your full name: ") fmt....阅读全文

golang语言实现读取csv文件内容,把相同的内容提取到另外一个文件

package main import ( "encoding/csv" "fmt" "io" "os" "path/filepath" "strconv" ) func CheckErr(err error) { if nil != err { panic(err) } } func GetFullPath(path string) string { absolutePath, _ := filepath.Abs(path) return absolutePath } func WriteFile(content []string) { f, err := os.OpenFile("sameName.csv", os.O_APPEND|os.O_CREATE, os.ModeAppend)...阅读全文

博文 2014-10-23 07:00:01 rufidmx

golang读取文本文件示例

一般文件比较小的话可以将文件全部读入内存中,然后转换成string再按行分割一下 func GetFileContentAsStringLines(filePath string) ([]string, error) { logger.Infof("get file content as lines: %v", filePath) result := []string{} b, err := ioutil.ReadFile(filePath) if err != nil { logger.Errorf("read file: %v error: %v", filePath, err) return result, err } s := string(b) for _, lineStr := ...阅读全文

博文 2016-02-10 02:00:02 xielingyun

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2015-11-26 17:22:53 Coldstar

go语言之bufio 打开文件,读取一行

package main import ( "fmt" "os" "bufio" "io" ) func main() { f, err := os.Open("c:\\aaa.txt")//打开文件 defer f.Close() //打开文件出错处理 if nil == err { buff := bufio.NewReader(f) //读入缓存 for { line, err := buff.ReadString('\n') //以'\n'为结束符读入一行 if err != nil || io.EOF == err { break } fmt.Print(line) //可以对一行进行处理 } } ...阅读全文

博文 2015-06-17 23:02:07 zistxym

Go语言的timeout和select随机问题

看无闻的Go教程中提到,Go的select对channel的操作,是随机的。我测试的时候,在select中对channel写数据,确实是随机的。但是,我还想证实一下,select对channel的读,也是随机的。下面是一个例子,我通过goroutine,对ch1和ch2两个channel读取数据。为了避免ch1和ch2刚顺序写完就被读出来,影响实验的准确性。我特意在goroutine中使用了timeout。但是我发现两个问题: ①:最终还是先输出ccc,再输出ddd,运行多少次都是一样。我的理解,虽然goroutine后台去执行了,但是休眠5s的过程中,ch1和ch2都已经有值了,那么休眠结束后,理应会随机先输出ccc或者ddd啊 ②:关于timeout,我用sublime的插件...阅读全文

Golang 目录文件数量和大小统计

《The Go Programming Language》笔记 import ( "flag" "fmt" "io/ioutil" "os" "path/filepath" "sync" "time" ) //获取目录dir下的文件大小 func walkDir(dir string, wg *sync.WaitGroup, fileSizes chan<- int64) { defer wg.Done() for _, entry := range dirents(dir) { if entry.IsDir() {//目录 wg.Add(1) subDir := filepath.Join(dir, entry.Name()) go walkDir(subDir, wg, fileSize...阅读全文

博文 2016-11-29 06:00:20 lezong2011

Go-Ping

package conn import ( "bytes" "net" "os" "time" ) const ( ICMP_ECHO_REQUEST = 8 ICMP_ECHO_REPLY = 0 ) // Ping Request func makePingRequest(id, seq, pktlen int, filler []byte) []byte { p := make([]byte, pktlen) copy(p[8:], bytes.Repeat(filler, (pktlen-8)/len(filler)+1)) p[0] = ICMP_ECHO_REQUEST // type p[1] = 0 // code p[2] = 0 // cksum p[3] = 0 // ...阅读全文

博文 2015-02-26 12:28:25 nulijiabei

Golang为别人写的csv文件处理的例子

package main import ( "encoding/csv" "flag" "io" "log" "os" "sort" "strings" ) var quick, first, unrepeat bool func main() { path := flag.String("p", "", "-p 指定csv文件路径") logname := flag.String("l", "", "-l 指定结果输出路径,不指定则输出到标准输出") flag.BoolVar(&quick, "q", false, "-q 数据全部加载到内存中处理,默认是少量数据加载到内存操作,bool值") flag.BoolVar(&first, "f", false, "-f 使用首次遇到的一条数据...阅读全文

博文 2016-10-10 01:00:01 fyxichen

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 udp服务端客户端例子

golang udp服务端客户端例子 服务端: package main import ( "fmt" "net" ) func main() { // 创建监听 socket, err := net.ListenUDP("udp4", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 8080, }) if err != nil { fmt.Println("监听失败!", err) return } defer socket.Close() for { // 读取数据 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil...阅读全文

golang遇到的win下读取txt字符乱码的问题

import ( "encoding/csv" "os" "github.com/axgle/mahonia" ) // GetCSV 读取csv文件. func GetCSV(csvPath string) [][]string { file, err := os.Open(csvPath) if err != nil { glog.Error("Error when open file in GetCSV():", err) return nil } defer file.Close() decoder := mahonia.NewDecoder("gbk") // 把原来ANSI格式的文本文件里的字符,用gbk进行解码。 // r := csv.NewReader(file) r :=...阅读全文

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

利用 Go 进行串口通讯go-serial

go-serial 是一个允许在Go中读取和写入串行端口的软件包。它利用Go进行串口通讯。 目前该软件包仅适用于 OS X,Linux 和 Windows,它可能只需更新一些常量就可以移植到其他类Unix平台上。 只需使用`go get`: 更新: 设置一个`serial.OpenOptions`结构,然后调用`serial.Open`。例如...阅读全文

开源项目 2018-04-17 12:30:02 网友