Почему вы меняете os.Stdout
на файл для вашей библиотеки? Кажется, что используемый вами пакет tablewriter принимает io.Writer
, который вы хотите использовать:
package main
import (
"fmt"
"log"
"os"
"github.com/olekukonko/tablewriter"
)
func main() {
fmt.Println("Outputting to file, please wait...")
f, err := os.Create("mahfile.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()
table := tablewriter.NewWriter(f)
table.Render()
}
https://play.golang.org/p/4L5Qu2SA4Uy
Очевидно, что вам может потребоваться объявить вещи в другом порядке, но я бы не рекомендовал изменять ожидаемую функциональность os.Stdout
для достижения вашей цели. Они просто используют его как заполнитель для вас, чтобы перезаписать.
Однако, чтобы ответить на ваш вопрос: когда вы инициализировали tablewriter.NewWriter(os.Stdout)
, вы предоставили ему копию io.Writer
STDOUT - замена os.Stdout
позже в вашем приложении не отменяет этого.
Чтобы выполнить то, что вы хотите, вам потребуется другой писатель, который может знать об этом изменении, как оно может произойти, если это необходимо (см. Первый ответ)