ITPub博客

首页 > IT职业 > IT职场 > go技巧分享(三)

go技巧分享(三)

IT职场 作者:soloxiao 时间:2021-09-09 09:35:37 0 删除 编辑

这是一个系列文章,主要分享go的使用建议和技巧,每次分享3点,希望你能有所收获。

1 打印更易读的结构体

package mainimport "fmt"type User struct {
    Name string
    Age  int
    Addr string}func main() {
    u := User{"user1", 12, "addr"}
    fmt.Printf("%vn", u)
    fmt.Printf("%+vn", u)
    fmt.Printf("%#vn", u)
}/*
{user1 12 addr}
{Name:user1 Age:12 Addr:addr}
main.User{Name:"user1", Age:12, Addr:"addr"}
*/

由示例中可以看到,这里定义了一个叫User的结构体,结构体中有Name、Age和Addr三个字段,第一种打印方式通过%v,只能看到结构体的字段值,如果字段较多,可读性不是很好。第二种打印方式通过%+v,会打印出结构体的每个字段名和相应字段的值。第三种打印方式通过%#v,会打印出结构体的具体类型、字段名称和字段值,方便检查结构的详细信息。所以如果需要在日志中打印具体的结构体信息,可以使用%#v方式。

2 简易定时器实现

package mainimport (    "fmt"
    "time")func main() {    for range time.Tick(3 * time.Second) {
        fmt.Println(time.Now().Format(time.ANSIC))
    }
}
$ go run timer_demo.go
Mon May 20 14:43:47 2018Mon May 20 14:43:50 2018Mon May 20 14:43:53 2018(省略)

通过使用time包中的Tick函数,可以实现一个简单的定时器,配合for循环可以周期性的执行某些操作。由示例中可以看到,执行示例程序,每隔3s会打印当前的系统时间。

3 正确的字符串连接方式

package mainimport (    "bytes"
    "fmt"
    "time")func main() {
    totalStrs := 100000
    strList := make([]string, 0, totalStrs)    for i := 0; i 

通过bytes.Buffer的缓存机制,在连接大量字符串时,可以大大的提升性能。由示例中可以看到,这里模拟了10万个字符串连接操作,使用传统的加号方式和使用bytes.Buffer方式,性能相差上万倍。其实不止go语言提供了这种缓存机制,大多数语言都有类似方式实现字符串连接。



作者:songleo
链接:https://www.jianshu.com/p/0be863785119

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2079/viewspace-2805003/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: python小技巧
请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    122
  • 访问量
    824