1package ansi 2 3import ( 4 "os" 5 "syscall" 6 "unsafe" 7) 8 9func EraseInLine(mode int) { 10 handle := syscall.Handle(os.Stdout.Fd()) 11 12 var csbi consoleScreenBufferInfo 13 procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) 14 15 var w uint32 16 var x short 17 cursor := csbi.cursorPosition 18 switch mode { 19 case 1: 20 x = csbi.size.x 21 case 2: 22 x = 0 23 case 3: 24 cursor.x = 0 25 x = csbi.size.x 26 } 27 procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(x), uintptr(*(*int32)(unsafe.Pointer(&cursor))), uintptr(unsafe.Pointer(&w))) 28} 29