Open
Description
- 下面的代码输出什么
func main() {
i := -5
j := +5
fmt.Printf("%+d %+d", i, j)
}
解析:%d
表示输出十进制数字,+
表示输出数值的符号,不表示取反。
- 下面的代码输出什么
func main() {
str := "hello"
str[0] = 'x'
fmt.Println(str)
}
解析:编译出错,Go
语言中的字符串是只读的。
- 下面的代码输出什么
func main() {
i := 65
fmt.Println(string(i))
}
解析:UTF-8
编码中,十进制数字 65
对应的符号是 A
。
- 下面代码输出什么
type ConfigOne struct {
Daemon string
}
func (c *ConfigOne) String() string {
return fmt.Sprintf("print: %v", c)
}
func main() {
c := &ConfigOne{}
c.String()
}
解析:出现运行时错误。如果类型实现 String()
方法,当格式化输出时会自动使用 String()
方法。
上面这段代码是在该类型的 String()
方法内使用格式化输出,导致递归调用,最后抛错。
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow