go 杂记

作者: 阳丶小光 | 来源:发表于2019-07-23 19:33 被阅读0次

1. string和buffer

当需要对一个字符串进行频繁的操作时,谨记在go语言中字符串是不可变的(类似java和c#)。使用诸如a += b形式连接字符串效率低下,尤其在一个循环内部使用这种形式。这会导致大量的内存开销和拷贝。应该使用一个字符数组代替字符串,将字符串内容写入一个缓存中。 例如以下的代码示例:

var b bytes.Buffer
...
for condition {
    b.WriteString(str) // 将字符串str写入缓存buffer
}
return b.String()

注意:由于编译优化和依赖于使用缓存操作的字符串大小,当循环次数大于15时,效率才会更佳。

2.何时使用new()和make()

  • 切片、映射和通道,使用make
  • 数组、结构体和所有的值类型,使用new

3.多重循环退出

found := false
Found: for row := range arr2Dim {
    for column := range arr2Dim[row] {
        if arr2Dim[row][column] == V{
            found = true
            break Found
        }
    }
}

4.简单的超时模板

timeout := make(chan bool, 1)
go func() {
    time.Sleep(1e9) // one second  
    timeout <- true
}()
select {
    case <-ch:
    // a read from ch has occurred
    case <-timeout:
    // the read from ch has timed out
}

相关文章

  • go 杂记

    1. string和buffer 当需要对一个字符串进行频繁的操作时,谨记在go语言中字符串是不可变的(类似jav...

  • go-并发杂记

    两个相同类型的channel可以使用==运算符比较。一个channel也可以和nil进行比较。 Channel还支...

  • 2018-12-01

    练车杂记

  • 学琴杂记

    学琴杂记 一 很小...

  • golang系列教程

    Go包管理 Go开发工具 Go Doc 文档 Go 数组 Go 切片 Go Map Go 类型 Go 函数方法 G...

  • 散·杂·笔

    本人的记录分为散记、杂记、笔记。 散记,不分类,随心随记。杂记,分类,记录若干范畴的心得,比如物理。笔记,分类,记...

  • 学习笔记·快速记短语·关于go

    go on 继续 go away 走开 go out 出去 go over 复习 go back 回去 go ac...

  • wordlist 16

    go go go

  • 找准方向

    go go go

  • GO 命令

    go run go build go install go list

网友评论

      本文标题:go 杂记

      本文链接:https://www.haomeiwen.com/subject/svsalctx.html