GoLang == true评估但未使用

时间:2014-04-08 21:23:09

标签: go syntax

在代码中,我尝试做一些操作

is_html := false;

// Check, if HTMl is exist 
for i := 0; i < len(modules_arr); i++ { 
    if modules_arr[i] == "html" { is_html := true }

}

if is_html ==true
{
    fmt.Printf("%v", "asdasd")
}

但是我收到了一个错误:

./api.go:26: missing condition in if statement
./api.go:26: is_html == true evaluated but not used
Error: process exited with code 2.

5 个答案:

答案 0 :(得分:9)

if语句需要{在go的同一行

这意味着你无法做到

if is_html ==true
{
    fmt.Printf("%v", "asdasd")
}

正确的代码是

if is_html ==true {
    fmt.Printf("%v", "asdasd")
}

阅读http://golang.org/doc/effective_go.html#semicolons以便更好地理解

答案 1 :(得分:1)

例如,

package main

import "fmt"

func main() {
    modules_arr := []string{"net", "html"}
    is_html := false
    // Check, if HTMl is exist
    for i := 0; i < len(modules_arr); i++ {
        if modules_arr[i] == "html" {
            is_html = true
        }
    }
    if is_html == true {
        fmt.Printf("%v", "asdasd")
    }
}

输出:

asdasd

语句is_html := true声明了一个新变量,隐藏了声明is_html := false中声明的变量。写is_html = true以使用先前声明的变量。

答案 2 :(得分:1)

例如,

package main

func main() {
    modules_arr := []string{"asd", "html"}
    is_html := false

    for i := 0; i < len(modules_arr); i++ {
        if modules_arr[i] == "html" {
            is_html = true
        }

    }
    //or
    for _, value := range modules_arr {
        if value == "html" {
            is_html = true
        }
    }

    if is_html {//<- the problem is here! We Can't move this bracket to the next line without errors, but we can leave the expression's second part
        print("its ok.")
    }
}

答案 3 :(得分:0)

正如@Dustin已经指出的那样,它应该是isHtml

https://play.golang.org/p/Whr4jJs_ZQG

package main

import (
    "fmt"
)

func main() {
    isHtml := false

    if isHtml {
        fmt.Println("isHtml is true")
    }

    if !isHtml {
        fmt.Println("isHtml is false")
    }
}

答案 4 :(得分:0)

在golang中,无论您声明了什么,都需要使用。所以,

if is_html == true {
    fmt.Printf("%T", is_html)
}