使用golang在Windows中获取终端宽度

时间:2015-02-09 20:42:09

标签: windows go terminal

是否可以在Go中获得终端宽度?

我尝试使用http://github.com/nsf/termbox-go代码:

package main

import (
    "fmt"

    "github.com/nsf/termbox-go"
)

func main() {
    fmt.Println(termbox.Size())
}

但它会打印0 0

我也试过http://github.com/buger/goterm,但当我尝试go get时,我收到了错误:

$ go get github.com/buger/goterm
# github.com/buger/goterm
..\..\buger\goterm\terminal.go:78: undefined: syscall.SYS_IOCTL
..\..\buger\goterm\terminal.go:82: not enough arguments in call to syscall.Syscall

关于如何获得终端宽度的任何其他想法?

2 个答案:

答案 0 :(得分:5)

您需要在致电termbox.Init()之前致电termbox.Size(),然后在结束时致电termbox.Close()

package main

import (
    "fmt"

    "github.com/nsf/termbox-go"
)

func main() {
    if err := termbox.Init(); err != nil {
        panic(err)
    }
    w, h := termbox.Size()
    termbox.Close()
    fmt.Println(w, h)
}

答案 1 :(得分:0)

您也可以使用 twin 包:

package main
import "github.com/walles/moar/twin"

func main() {
   s, e := twin.NewScreen()
   if e != nil {
      panic(e)
   }
   w, h := s.Size()
   println(w, h)
}

https://pkg.go.dev/github.com/walles/moar/twin#Screen