Go文件命名规范

./beego/bee/colorwriter.go ./beego/bee/colorwriter_windows.go 这个文件都定义了

type colorWriter struct {
    w             io.Writer
    mode          outputMode
    state         csiState
    paramStartBuf bytes.Buffer
    paramBuf      bytes.Buffer
}
type colorWriter struct {
    w    io.Writer
    mode outputMode
}

程序并没有采用包的形式来调用,那程序是怎么区分的该调用哪个呢?并且这种同名结构为什么不会产生冲突? 难道是凭借的后面的windows,来平台区分?

已邀请:

astaxie - 创造、获取、分享、传播和应用Go

赞同来自: wangfei Sphinx gameogre tangyumeng nilyang

你的猜测是对的,在Go里面有如下的约定:

  1. 如果文件名是以 "." 或者 "_" 开头的话编译的时候会被忽略
  2. 文件名如果是 suffix_test.go are 只会在运行go test的时候才会被编译和运行
  3. 文件名支持系统和architecture来指定系统的编译。文件名支持如下的格式:
    *_GOOS
    *_GOARCH
    *_GOOS_GOARCH

    例如 name_linux.go 只会在 linux 编译, name_amd64.go 只会在 amd64 系统编译. 当然你也可以不用文件名,而是在文件顶端加上这一句 //+build amd64

更多的信息你可以去https://golang.org/pkg/go/build/

chuzhaoqian - 我猜一猜

赞同来自:

原来如此,s k y

要回复问题请先登录注册