今天写代码的时候看到一个提示,然后不小心看到了这么一个代码

1
log.Error("xxx :", string(respCode)+string(resp.Body))

这里就不去吐槽为什么不使用格式化输出而要用 + + 了,最值得吐槽的地方是这里的 respCode 是 int 型的数字,但是用了 string 来强制转换。

string 强制转换是装维 ASCII 码对应的字符,也就是说,如果 respCode 是 97,那么
string(97) 得到的结果应该是 a,而这里的 respCode 代码的是状态码。一般来说,http 状态码常见的有 200、301、404 等等,所以我在这里记录一下几个常见的状态码对应的 ASCII 码字符。下次看到一些稀奇古怪的符号的时候,给自己增加一个排查问题的思路。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func main() {

fmt.Println("code 200: ", string(200))
fmt.Println("code 301: ", string(301))
fmt.Println("code 302: ", string(302))
fmt.Println("code 400: ", string(400))
fmt.Println("code 403: ", string(403))
fmt.Println("code 404: ", string(404))
fmt.Println("code 500: ", string(500))
}

1
2
3
4
5
6
7
8
▶ go run string.go
code 200: È
code 301: ĭ
code 302: Į
code 400: Ɛ
code 403: Ɠ
code 404: Ɣ
code 500: Ǵ

也许还会有一些别的古怪的符号,遇到了再慢慢添加。