package main
import (
"bytes"
"io"
"os"
"github.com/olekukonko/tablewriter"
)
func main() {
data := [][]string{
{"1/1/2014", "Domain name", "2233", "$10.98"},
{"1/1/2014", "January Hosting", "2233", "$54.95"},
{"1/4/2014", "February Hosting", "2233", "$51.00"},
{"1/4/2014", "February Extra Bandwidth", "2233", "$30.00"},
}
w := New(os.Stdout)
table := tablewriter.NewWriter(w)
table.SetHeader([]string{"Date", "Description", "CV2", "Amount"})
table.SetFooter([]string{"", "", "Total", "$146.93"}) // Add Footer
table.SetBorder(false) // Set Border to false
table.AppendBulk(data) // Add Bulk Data
table.Render()
}
type ClrfAdder struct {
writer io.Writer
}
func New(w io.Writer) *ClrfAdder {
return &ClrfAdder{
writer: w,
}
}
func (c ClrfAdder) Write(p []byte) (n int, err error) {
replaced := bytes.ReplaceAll(p, []byte("\n"), []byte("\r\n"))
n, err = c.writer.Write(replaced)
if err != nil {
if n > len(p) {
n = len(p)
}
return n, err
}
return len(p), nil
}
func divide(x ...float64) float64 {
if len(x) == 0 {
return 0
}
if len(x) == 1 {
return x[0]
}
a := x[0]
for _, v := range x[1:] {
a /= v
}
return a
}
cmd := exec.Command("go", "build", ".")
cmd.Env = os.Environ()
cmd.Env = append(cmd.Env, "GOOS=windows")
func start() {
file, _ := os.ReadFile("./data.txt")
for _, i := range strings.Split(string(file), "\n") {
select {
case <-stop:
return
default:
http.Get(Url + i)
}
}
}
package main
import (
"context"
"errors"
"io/ioutil"
"net/http"
"strings"
)
func start() {
file, _ := os.ReadFile("./data.txt")
ctx, cancel := context.WithCancel(context.Background())
defer cancel() // контекст обязательно надо отменять в конце
go func() {
select {
// Отменяем контекст при получении стоп-сигнала
case <-stop:
cancel()
// чтобы горутина завершилась по отмене контекста даже если stop не будет
case <-ctx.Done():
}
}()
for _, i := range strings.Split(string(file), "\n") {
err := processUrl(ctx, Url+i)
if err != nil {
if errors.Is(err, context.Canceled) {
return
}
// обработать ошибку
}
}
}
func processUrl(ctx context.Context, finalUrl string) error {
req, err := http.NewRequestWithContext(ctx, "GET", finalUrl, nil)
if err != nil {
return err
}
res, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
defer res.Body.Close() // обязательно, иначе будет утечка
// обработать ответ
return nil
}
package main
func main() {
var str strType
str.Temp()
}
type strType string
func (s strType) Temp() {
}