首页 > 解决方案 > 结构嵌入:不能引用未导出的名称 os.fileStat

问题描述

不久前,我试图从这个答案中嵌入以下提示。

// Has all methods of *sql.Row.
type myRow struct {
    *sql.Row
}

但是,当我尝试https://play.golang.org/p/Vnyx4lTwISn时会抛出错误cannot refer to unexported name os.fileStat

package main

import (
    "fmt"
    "os"
)

type myFileStat struct {
    info *os.fileStat
}


func main() {
    fmt.Println("Hello, playground")
}

你能给我指出正确的方向吗?

标签: go

解决方案


在 go 中,以小写字母开头的标识符是不可见的。因此出现“未导出的名称 os.fileStat”错误。请参阅https://golang.org/ref/spec#Exported_identifiers

听起来你在追求 os.Stat 和 os.LStat 之类的东西。它们返回从 os 包内部的 fileStat 派生的 FileInfo 类型。

在此处查看 unix os.Stat 的实现https://github.com/golang/go/blob/a38a917aee626a9b9d5ce2b93964f586bf759ea0/src/os/stat_unix.go


推荐阅读