2016-04-23 7 views

答えて

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!") 
    } 
} 
関連する問題