我有这个错误:
# command-line-arguments
.\cheking.go:14: cannot use strconv.Itoa(i + 64) + strconv.Itoa(j + 48) (type st
ring) as type [8]int in assignment
代码:
package main
import (
"fmt"
"strconv"
)
func main() {
var board [8][8]int
for i := 1; i <= 8; i++ { // initialize array
for j := 1; j <= 8; j++ {
board[(j-1)+8*(i-1)] = (strconv.Itoa(i+64) + "" + strconv.Itoa(j+48)) // int to char
fmt.Printf("%s \n", board[i][j])
}
}
}
答案 0 :(得分:3)
strconv.Itoa
是FormatInt(int64(i), 10)
的缩写:
FormatInt返回给定基数中i的字符串表示形式, for 2&lt; = base&lt; = 36.结果使用小写字母&#39; a&#39;到&#39; z&#39; 对于数字值&gt; = 10。
所以strconv.Itoa(i+64)
的结果是字符串,board
不是(这是错误)。
我认为你正在尝试做这样的工作示例代码(如果没有,请告诉我):
package main
import "fmt"
func main() {
board := [8][8]string{}
for i := 0; i < 8; i++ { // initialize array
for j := 0; j < 8; j++ {
board[i][j] = string(i+65) + string(j+49) // int to char
fmt.Printf("%s ", board[i][j])
}
fmt.Println()
}
}
输出:
A1 A2 A3 A4 A5 A6 A7 A8
B1 B2 B3 B4 B5 B6 B7 B8
C1 C2 C3 C4 C5 C6 C7 C8
D1 D2 D3 D4 D5 D6 D7 D8
E1 E2 E3 E4 E5 E6 E7 E8
F1 F2 F3 F4 F5 F6 F7 F8
G1 G2 G3 G4 G5 G6 G7 G8
H1 H2 H3 H4 H5 H6 H7 H8
如果我的猜测没问题,你也可以这样做:
package main
import "fmt"
func main() {
board := [8][8]string{
{"A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8"},
{"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8"},
{"C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8"},
{"D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8"},
{"E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8"},
{"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8"},
{"G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"},
{"H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8"},
}
// print the board:
for i := 0; i < 8; i++ {
fmt.Println(board[i])
}
}
输出:
[A1 A2 A3 A4 A5 A6 A7 A8]
[B1 B2 B3 B4 B5 B6 B7 B8]
[C1 C2 C3 C4 C5 C6 C7 C8]
[D1 D2 D3 D4 D5 D6 D7 D8]
[E1 E2 E3 E4 E5 E6 E7 E8]
[F1 F2 F3 F4 F5 F6 F7 F8]
[G1 G2 G3 G4 G5 G6 G7 G8]
[H1 H2 H3 H4 H5 H6 H7 H8]
答案 1 :(得分:0)
首先,如果要使用字符串初始化每个电路板位置,则需要更改board
数组的声明:
var board [8][8]string
因为strconv.Itoa
返回一个字符串。
然后,如果您只需要按顺序访问每个电路板位置,则只需更新内部循环:
// You don't need to iterate through the array like C using index arithmatic
for i := 0; i < 8; i++ { // initialize array
for j := 0; j < 8; j++ {
// use whatever logic you are using to init each value
board[i][j] = (strconv.Itoa(i+64) + "" + strconv.Itoa(j+48)) // int to char
fmt.Printf("%s \n", board[i][j])
}
}