funcmain(){ctx:=context.Background()// trap Ctrl#C and call cancel on the contextctx,cancel:=context.WithCancel(ctx)c:=make(chanos.Signal,1)signal.Notify(c,os.Interrupt)deferfunc(){signal.Stop(c)cancel()}()gofunc(){select{case<-c:cancel()case<-ctx.Done():}}()doSomethingAwesome(ctx)}
Более простой вариант
funcmain(){c:=make(chanos.Signal,1)signal.Notify(c,os.Interrupt)// Wait for Ctrl#C<-c}
promptui - позволяет запрашивать у пользователя информацию в процессе работает. Интегрируется, например с cobra и другими подобными библиотеками. GoDoc.
cli - ещё одна библиотека для расширения флагов командной строки. GoDoc.
koanf - позиционируется как более легковесный конкурент viper.