Skip to content

字符串相关题目 #51

Open
Open
@JasonJe

Description

@JasonJe
  1. 下面的代码输出什么
func main() {  
    i := -5
    j := +5
    fmt.Printf("%+d %+d", i, j)
}

解析:%d表示输出十进制数字,+表示输出数值的符号,不表示取反。

  1. 下面的代码输出什么
func main() {
    str := "hello"
    str[0] = 'x'
    fmt.Println(str)
}

解析:编译出错,Go 语言中的字符串是只读的。

  1. 下面的代码输出什么
func main() {  
    i := 65
    fmt.Println(string(i))
}

解析:UTF-8 编码中,十进制数字 65 对应的符号是 A

  1. 下面代码输出什么
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    GoGolang

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions