0
switch t := some.(type){}
がうまく動作する理由はわかりませんが、switch k := f.Kind(){}
などを試してみました。golangスイッチに「値として使用」エラーがありますか?
.\mym.go:58: k := f.Kind() used as value
exit status 2
switch t := some.(type){}
がうまく動作する理由はわかりませんが、switch k := f.Kind(){}
などを試してみました。golangスイッチに「値として使用」エラーがありますか?
.\mym.go:58: k := f.Kind() used as value
exit status 2
はい、正しくは構文エラーです。 SimpleStmtまたは にする必要があります。ExprSwitchStmt = "switch" [SimpleStmt ";" ] [式] "{" {ExprCaseClause} "}"。
参照: https://golang.org/ref/spec#Switch_statements
エクスプレッションスイッチでは、ケースにはスイッチ式の値と比較される式が含まれています。 これは動作します:
package main
import (
"fmt"
)
type Test struct {
kind int
}
func (s *Test) Kind() int {
return s.kind
}
func main() {
f := &Test{12}
//fmt.Println(k := f.Kind()) //syntax error: unexpected :=, expecting comma or)
switch k := f.Kind(); k {
case 12:
fmt.Println(k) //12
case 0:
fmt.Println("Bye!")
}
}