【问题标题】:Does Go fmt indent automatically?Go fmt 会自动缩进吗?
【发布时间】:2018-12-18 21:54:30
【问题描述】:

当我执行fmt.Printf("...\n") 时,它不会将光标移动到第 0 列,因此下一行会缩进:

13
  13
    13
      13
        13
          13
            113 ('q')

这是我的代码:

package main

import (
    "bufio"
    "fmt"
    "os"
    "unicode"

    "golang.org/x/crypto/ssh/terminal"
)

func main() {
    oldState, err := terminal.MakeRaw(0)
    if err != nil {
        panic(err)
    }
    defer terminal.Restore(0, oldState)

    reader := bufio.NewReader(os.Stdin)

    var c rune
    for err == nil {
        if c == 'q' {
            break
        }

        c, _, err = reader.ReadRune()

        if unicode.IsControl(c) {
            fmt.Printf("%d\n", c)
        } else {
            fmt.Printf("%d ('%c')\n", c, c)
        }
    }

    if err != nil {
        panic(err)
    }
}

【问题讨论】:

  • 您将终端置于原始模式,不需要回车将光标置于行首吗?

标签: unix go terminal


【解决方案1】:

评论:您将终端置于原始模式,这不需要 回车将光标放在行首? – 吉姆B


例如,

terminal.go:

package main

import (
    "bufio"
    "fmt"
    "os"
    "unicode"

    "golang.org/x/crypto/ssh/terminal"
)

func main() {
    oldState, err := terminal.MakeRaw(0)
    if err != nil {
        panic(err)
    }
    defer terminal.Restore(0, oldState)

    reader := bufio.NewReader(os.Stdin)

    var c rune
    for err == nil {
        if c == 'q' {
            break
        }

        c, _, err = reader.ReadRune()

        if unicode.IsControl(c) {
            fmt.Printf("%d\r\n", c)
        } else {
            fmt.Printf("%d ('%c')\r\n", c, c)
        }
    }

    if err != nil {
        panic(err)
    }
}

输出:

$ go run terminal.go
13
13
13
13
13
113 ('q')
$ 

【讨论】:

    猜你喜欢
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多