我对golang是个新手,对编程也是个新手。围棋对我来说很难。有一件事总是让我感到困惑:数据类型。如果你运行这个(不是在操场上),那么它将输出:
./main.go:40: cannot use recorded (type string) as type SVC in append如果我反转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)
}发布于 2016-04-01 08:21:10
您的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)
}发布于 2016-04-01 23:30:17
你不能在升的基础上加米。因此您不能将string类型附加到SVC记录列表中。
如果希望[]SVC作为输出(SVC列表),则需要实现一个解析器,该解析器将字符串转换为SVC对象并将其追加。
如果您希望[]string作为输出,则需要实现一个序列化程序,将SVC转换为字符串并追加它。
如何做到这一点是一个单独的问题,这超出了这个问题的范围。
https://stackoverflow.com/questions/36345957
复制相似问题