为了账号安全,请及时绑定邮箱和手机立即绑定

使用iota时,我很困惑

使用iota时,我很困惑

Go
慕的地8271018 2023-07-26 19:39:25
您使用的 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属于结构的一部分无关。该类型的零值为State0,也等于Running。因此,当您分配给未初始化t的实例时,会得到零值,即。TT.StateT.StateRunning

据我从代码中可以看出,您似乎有一个“未知”值,即除了State声明的值之外的任何值。如果您想打印Unknown的零值State,请更改常量声明,以便Unknown获得零值(即 iota)。


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信