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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang如何格式化txt?

golang如何格式化txt?

Go
ABOUTYOU 2022-10-17 09:53:08
我有一個動態(tài)的 json,我將其轉(zhuǎn)換為 txt: JSON 示例:   {name: luis, last name: gomez, id_number: 87846516}我轉(zhuǎn)換它的代碼是這樣的:    file, _: = json.MarshalIndent (string (jsonData), "", "")     data: = ioutil.WriteFile ("test.txt", file, 0644)我成功地將它轉(zhuǎn)換為txt,但我需要給它一個特定的格式,其中只有值出現(xiàn),沒有標簽,分隔如下:     luis | gomez | 87846516格式我不知道怎么給它。
查看完整描述

2 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

您似乎正在從數(shù)據(jù)庫中獲取數(shù)據(jù),然后將其保存到文本文件中。最好的方法是從數(shù)據(jù)庫中獲取數(shù)據(jù),然后簡單地遍歷每一行。目前尚不清楚為什么將問題提出為轉(zhuǎn)換 json 數(shù)據(jù),如果它可以從數(shù)據(jù)庫中獲得。與其將其轉(zhuǎn)換為 json,不如直接將值寫入文件。


您可以打開一個文件,以便附加每個條目,然后在完成文件后關(guān)閉。我提供了一個示例文件,無論返回的行數(shù)(我假設(shè)數(shù)據(jù)庫中的每一行都是一個新行)或列數(shù),它都會為您提供所需的輸出。


以下代碼經(jīng)過測試并打?。簂uis | gomez | 87846516 


OS.APPEND 將在每次寫入時附加一個新行。因此,如果您多次運行此代碼,它不會覆蓋它而是添加到文件中。


package main


import (

    "database/sql"

    "fmt"

    "log"

    "os"

    "strings"


    _ "github.com/go-sql-driver/mysql"

)


type DbDao struct {

    db *sql.DB

}


var db DbDao


func (d *DbDao) Init(connstr string) error {


    db, err := sql.Open("mysql", connstr)

    if err != nil {

        return err

    }

    err = db.Ping()

    if err != nil {

        return err

    }

    d.db = db

    return nil

}


func main() {


    dblogin := os.Getenv("DBLOGIN")

    dbString := fmt.Sprintf("root:%s@/testDB", dblogin)

    err := db.Init(dbString)

    if err != nil {

        log.Fatal("Failed to create db connection:", err.Error())

    }


    f, err := os.OpenFile("text.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)

    if err != nil {

        log.Fatalf("ERROR: error opening file: %v", err)

    }

  defer f.Close()


    queryText := "select * from stackOverflow"

    rows, err := db.db.Query(queryText)

    if err != nil {

        log.Fatal(err)

    }


    columns, err := rows.Columns()

    if err != nil {

        log.Fatal(err)

    }


    count := len(columns)

    values := make([]interface{}, count)

    scanArgs := make([]interface{}, count)

    for i := range values {

        scanArgs[i] = &values[i]

    }


    for rows.Next() {

        err := rows.Scan(scanArgs...)

        if err != nil {

            log.Fatal(err)

        }


        concat := make([]string, 0)

        for i, _ := range columns {

            v := values[i]


            b, ok := v.([]byte)

            if ok {

                concat = append(concat, string(b))

            } else {

                concat = append(concat, fmt.Sprintf("%v", v))

            }

        }

        line := strings.Join(concat, " | ")

        fmt.Println(line)

        _, err = f.Write([]byte(fmt.Sprintf("%s\n", line)))

        if err != nil {

            log.Fatal(err)

        }


    }


    return

}



查看完整回答
反對 回復(fù) 2022-10-17
?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

首先創(chuàng)建 struct object called Person,然后定義一個String函數(shù)來做你想做的事


package main


import (

    "encoding/json"

    "strconv"

)


type Person struct {

    Name     string `json:"name"`

    LastName string `json:"last_name"`

    IdNumber int    `json:"id_number"`

}


// Convert to csv separated by " | "

func (p Person) String() string {

    return p.Name + " | " + p.LastName + " | " + strconv.Itoa(p.IdNumber)

}


func main() {


    // json data

    jsonData := map[string]interface{}{

        "name":      "luis",

        "last_name": "gomez",

        "id_number": 87846516,

    }


    person := Person{}

    jsonDataByte, _ := json.Marshal(jsonData)

    json.Unmarshal(jsonDataByte, &person)


    // print person

    println(person.String())

}

答案是:


luis | gomez | 87846516


查看完整回答
反對 回復(fù) 2022-10-17
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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