2016-04-01 15 views
0

我對golang很陌生,對編程也很陌生。對我來說一直很難。這是一件讓我困惑的事情:數據類型。如果你運行這個(不是在操場上),那麼它會吐出:GO:array/slice到常規字符串

./main.go:40: cannot use recorded (type string) as type SVC in append 

,如果我扭轉追加調用的值,它會吐出:

./main.go:40: first argument to append must be slice; have string 

我試圖要做的是抓住主目錄中的所有東西,將所有值修改後附加到數組中,然後使用ioutil將數組放入文件中。我想要的所有(現在)都是將這些值附加到func記錄中的切片上。任何人都可以幫忙嗎?

package main 

import "os" 
import "io/ioutil" 
import "fmt" 

type SVC struct { 
     key string 
     val string 
} 

func main() { 
     os.Chdir("../../../../../../..") 
     var data, err = ioutil.ReadDir("home") 
     checkerr(err) 
     for _, data := range data { 
       fmt.Println(data.Name()) 
     } 
     os.Chdir("home/beanboybunny/repos/bux/go/src/bux") 
} 
func checkerr(err1 error) { 
     if err1 != nil { 
       fmt.Println("error") 
     } 
} 
func writer(dataname string) { 
     f := "var " 
     uname := dataname 
     q := " = VVC{\n" 
     w := " bux: 1,\n" 
     e := " op: true,\n" 
     c := "}" 

     b2 := f + uname + q + w + e + c 
     record(b2) 
} 

func record(recorded string) { 
     cache := []SVC{} 
     record SVC := recorded 
     appenda := append(cache, recorded) 
} 

回答

0

您的type SVC struct有兩個私人字符串字段。如果你只是想要一串字符串,你不需要SVC類型。

如果你只是試圖建立與你的特殊格式在主目錄的項目轉化的字符串數組,這裏是展示利用追加和格式字符串的開始:https://play.golang.org/p/eUKTKRxwfp

package main 

import (
    "fmt" 
    "io/ioutil" 
    "os" 
    "strings" 
) 

func main() { 
    os.Chdir("../../../../../../..") 
    var data, err = ioutil.ReadDir("home") 
    checkerr(err) 
    lines := []string{} 
    for _, data := range data { 
     fmt.Println(data.Name()) 
     lines = append(lines, buildLine(data.Name())) 
    } 
    fmt.Println(strings.Join(lines, "\n")) 
    os.Chdir("home/beanboybunny/repos/bux/go/src/bux") 
} 

func checkerr(err1 error) { 
    if err1 != nil { 
     fmt.Printf("error: %v", err1) 
    } 
} 

func buildLine(dataname string) string { 
    return fmt.Sprintf("var %s = VVC{\n bux: 1,\n op: true,\n}", dataname) 
} 
0

你不能將米添加到升。因此,您不能將string類型附加到SVC記錄的列表中。

如果你想[]SVC作爲輸出(的SVC列表),你需要實現變換字符串的SVC對象,其追加的分析器。

如果你想[]string作爲輸出,你需要實現一個串行器,它將SVC轉換爲一個字符串並將其附加。

如何做到這是一個單獨的問題,超出了這個問題的範圍。