明日の16時

新天町マックの前に集合ね

Go言語の型エラー「non-bool (type int) used as if condition」とは一体

参考URL ▼お気楽 Go 言語プログラミング入門

  • エラトステネスのふるい

・コード

package main

import "fmt"

func main() {
    var primes [100]int
    for n := 2; n < len(primes); n++ {
        if primes[n] {
            continue
        }
        for m := 2 * n; m < len(primes); m += n {
            primes[m] = true
        }
        fmt.Print(n, " ")
    }
}

・実行結果

[Running] go run "c:\Users\user\go\src\play_gig\sieve.go"
command-line-arguments
src\play_gig\sieve.go:8:3: non-bool primes[n] (type int) used as if condition
src\play_gig\sieve.go:12:14: cannot use true (type bool) as type int in assignment

[Done] exited with code=2 in 0.596 seconds

エラー内容

non-bool primes[n] (type int) used as if condition

cannot use true (type bool) as type int in assignment

解決

この部分を

var primes [100]int

こう変えた

var primes [100]bool

疑問点

配列にint型とbool型とつけることができるって一体?