您使用的 Go 版本是什么(go version)?$ go version1.13最新版本是否会重现此问题?是的您使用什么操作系统和处理器架构(go env)?go env输出$ go envGOEXE=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GONOPROXY=""GONOSUMDB=""GOOS="darwin"GOPATH="/Users/chezixin/go"GOPRIVATE=""GOPROXY="https://goproxy.io"GOROOT="/usr/local/go"GOSUMDB="sum.golang.org"GOTMPDIR=""GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"GCCGO="gccgo"AR="ar"CC="clang"CXX="clang++"CGO_ENABLED="1"GOMOD="/Users/chezixin/go/src/go.mod"CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONFIG="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/mr/_x323k891dq9yvmvlgwqf4f40000gn/T/go-build490011880=/tmp/go-build -gno-record-gcc-switches -fno-common"你做了什么?package mainimport "fmt"type T struct { Name string Port int State State}type State intconst ( Running State = iota Stopped Rebooting Terminated)func (s State) String() string { switch s { case Running: return "Running" case Stopped: return "Stopped" case Rebooting: return "Rebooting" case Terminated: return "Terminated" default: return "Unknown" }}func main() { t := T{Name: "example", Port: 6666} fmt.Printf("t %+v\n", t)}结果:t {Name:example Port:6666 State:Running}您希望看到什么?
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
T.State
属于 类型State
。这与该字段是否T.State
属于结构的一部分无关。该类型的零值为State
0,也等于Running
。因此,当您分配给未初始化t
的实例时,会得到零值,即。T
T.State
T.State
Running
据我从代码中可以看出,您似乎有一个“未知”值,即除了State
声明的值之外的任何值。如果您想打印Unknown
的零值State
,请更改常量声明,以便Unknown
获得零值(即 iota)。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消