新行上的右括号不能编译

时间:2018-12-02 02:06:07

标签: go

此代码可以正常编译:

return func(w http.ResponseWriter, r *http.Request) {


    if r.Header.Get("tc_req_body_type") != m["request_body"] {
        fmt.Println(
            strings.Join([]string{"types are different", " actual:",
                r.Header.Get("tc_req_body_type"), "expected:", m["request_body"]}," "))
    }

    if r.Header.Get("tc_resp_body_type") != m["response_body"] {
        fmt.Println(
            strings.Join([]string{"types are different", " actual: ",
                r.Header.Get("tc_req_body_type"), " expected: ", m["request_body"]}," "))
    }


    fmt.Printf("Req: %s\n", r.URL.Path)

    h.ServeHTTP(w, r)
}

但是如果我在fmt.Println调用的最后一个括号后面添加换行符:

return func(w http.ResponseWriter, r *http.Request) {


    if r.Header.Get("tc_req_body_type") != m["request_body"] {
        fmt.Println(
            strings.Join([]string{"types are different", " actual:",
                r.Header.Get("tc_req_body_type"), "expected:", m["request_body"]}," ")
        )  // <<< here
    }

    if r.Header.Get("tc_resp_body_type") != m["response_body"] {
        fmt.Println(
            strings.Join([]string{"types are different", " actual: ",
                r.Header.Get("tc_req_body_type"), " expected: ", m["request_body"]}," ")
        )  // <<<  here
    }


    fmt.Printf("Req: %s\n", r.URL.Path)

    h.ServeHTTP(w, r)
}

现在它无法编译,这是什么原因?我在第二个代码示例中的差异旁边添加了一条注释,也只是写了更多的b / c,它说我的问题有太多代码,没有足够的单词谢谢。

1 个答案:

答案 0 :(得分:3)

  

The Go Programming Language Specification

     

Semicolons

     

形式语法使用分号“;”作为许多终结者   生产。 Go程序可以使用   以下两个规则:

     
      
  1. 当输入被分解成令牌时,在一行的最后一个令牌之后立即将分号自动插入令牌流中   如果该令牌是

         

    。标识符

         

    。整数,浮点数,虚数,符文或字符串文字

         

    。关键字之一中断,继续,失败或返回

         

    。运算符和标点符号++,-,),]或}

  2. 之一   
  3. 要允许复杂的语句占据一行,可以在结束“)”或“}”之前省略分号。

  4.   

  

语法错误:换行符意外,应使用逗号或

在参数列表行的末尾添加逗号,以避免自动插入分号。

r.Header.Get("tc_req_body_type"), "expected:", m["request_body"]}, " "),
) 

r.Header.Get("tc_req_body_type"), " expected: ", m["request_body"]}, " "),
)