是否可以在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
关于如何获得终端宽度的任何其他想法?
答案 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)
}