Golang笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jlh21/article/details/78400458

资源


Go SQLDrivers:https://github.com/golang/go/wiki/SQLDrivers
Awesome Go:https://awesome-go.com/
Go Projects:https://github.com/golang/go/wiki/Projects

基础

空白标识符: “_”


空白标识符可被赋予或声明为任何类型的任何值,而其值会被无害地丢弃。它有点像Unix中的 /dev/null 文件:它表示只写的值,在需要变量但不需要实际值的地方用作占位符。

  • 多重赋值中的空白标识符
if _, err := os.Stat(path); os.IsNotExist(err) {
    fmt.Printf("%s does not exist\n", path)
}

用空白标识符来代替该变量避免创建无用的变量,并表明该值将被丢弃。

  • 未使用的导入和变量
package main

import (
    "fmt"
    "io"
    "log"
    "os"
)

var _ = fmt.Printf // For debugging; delete when done. // 用于调试,结束时删除。
var _ io.Reader    // For debugging; delete when done. // 用于调试,结束时删除。

func main() {
    fd, err := os.Open("test.go")
    if err != nil {
        log.Fatal(err)
    }
    // TODO: use fd.
    _ = fd
}

使未导入的包或变量在编译时不报错。

  • 为副作用而导入
import _ "net/http/pprof"

仅是为了调用init()函数,无法通过包名来调用包中的其他函数。

  • 接口检查
if _, ok := val.(json.Marshaler); ok {
    fmt.Printf("value %v of type %T implements json.Marshaler\n", val, val)
}

判断某个类型是否是实现了某个接口,而不需要实际使用接口本身 (可能是错误检查部分),就使用空白标识符来忽略类型断言的值。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页