第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 GO 中打印表格的有效方法

在 GO 中打印表格的有效方法

Go
回首憶惘然 2021-12-27 10:50:52
好的,所以我想出了一個(gè)簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)這一目標(biāo)。我們首先使用calloc為數(shù)組分配內(nèi)存:double* c_func(int n_rows) {    double* result;    result = calloc(n_rows, sizeof(double));    for (int i = 0; i < n_rows; ++i) {        result[i] = (double)i;    }    return result;}之后,我們只需在 Go 中將數(shù)據(jù)轉(zhuǎn)換為正確的類(lèi)型。訣竅是使用C.free釋放從 C 端分配的內(nèi)存。// convert C double pointer to float64 slice ...func doubleToFloats(in *C.double, size int) []float64 {    defer C.free(unsafe.Pointer(in))    out := (*[1 << 30]float64)(unsafe.Pointer(in))[:size:size]    return out}
查看完整描述

2 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊

tabwriter標(biāo)準(zhǔn)庫(kù)中的包對(duì)于這種事情簡(jiǎn)單易行:


w := tabwriter.NewWriter(os.Stdout, 1, 1, 1, ' ', 0)

fmt.Fprintln(w, "a\tb\tc\td\t")

fmt.Fprintln(w, "aa\tbb\tcc\t")

fmt.Fprintln(w, "aaa\tbbb\tccc\t")

fmt.Fprintln(w, "aaaa\tbbbb\tcccc\tdddd\t")

w.Flush()


// Prints out:

// a    b    c    d 

// aa   bb   cc   

// aaa  bbb  ccc  

// aaaa bbbb cccc dddd 

您可以將 os.Stdout 替換為任何io.Writer.


查看完整回答
反對(duì) 回復(fù) 2021-12-27
?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

例如,


package main


import (

    "encoding/csv"

    "fmt"

    "os"

    "strconv"

)


func main() {

    outfile := "file.tsv"

    f, err := os.Create(outfile)

    if err != nil {

        fmt.Println(err)

        os.Exit(1)

    }

    defer f.Close()

    w := csv.NewWriter(f)

    defer w.Flush()

    w.Comma = '\t'


    a := []string{"a", "b"}

    i, j := 0, 1

    x := float64(2.7)


    // Write row.

    err = w.Write(

        []string{

            a[i], a[j],

            strconv.FormatFloat(x, 'f', 4, 64),

        },

    )

    if err != nil {

        fmt.Println(err)

    }

}

輸出:


$ cat file.tsv

a   b   2.7000

$

如果您使用 goroutines,這里有一個(gè)使用互斥鎖來(lái)保護(hù) csv.Writer 的版本。


package main


import (

    "encoding/csv"

    "fmt"

    "os"

    "strconv"

    "sync"

)


type csvWriter struct {

    w *csv.Writer

    m sync.Mutex

}


func (c *csvWriter) write(rec []string) error {

    c.m.Lock()

    defer c.m.Unlock()

    return c.w.Write(rec)

}


func (c *csvWriter) flush() {

    c.m.Lock()

    defer c.m.Unlock()

    c.w.Flush()

}


func main() {

    outfile := "file.tsv"

    f, err := os.Create(outfile)

    if err != nil {

        fmt.Println(err)

        os.Exit(1)

    }

    defer f.Close()

    w := csvWriter{w: csv.NewWriter(f)}

    defer w.flush()

    w.w.Comma = '\t'


    a := []string{"a", "b"}

    i, j := 0, 1

    x := float64(2.7)


    // Write row.

    err = w.write(

        []string{

            a[i], a[j],

            strconv.FormatFloat(x, 'f', 4, 64),

        },

    )

    if err != nil {

        fmt.Println(err)

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-12-27
  • 2 回答
  • 0 關(guān)注
  • 487 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)