首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GO:array/slice to regular string

GO:array/slice to regular string
EN

Stack Overflow用户
提问于 2016-04-01 08:14:14
回答 2查看 165关注 0票数 0

我对golang是个新手,对编程也是个新手。围棋对我来说很难。有一件事总是让我感到困惑:数据类型。如果你运行这个(不是在操场上),那么它将输出:

代码语言:javascript
复制
./main.go:40: cannot use recorded (type string) as type SVC in append

如果我反转append调用中的值,它将输出:

代码语言:javascript
复制
./main.go:40: first argument to append must be slice; have string

我要做的是获取主目录中的所有内容,将修改后的所有值附加到一个数组中,然后使用ioutil将该数组放入一个文件中。我所需要的(到现在为止)就是将这些值附加到func记录中的切片上。有人能帮上忙吗?

代码语言:javascript
复制
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)
}
EN

回答 2

Stack Overflow用户

发布于 2016-04-01 08:21:10

您的type SVC struct有两个私有字符串字段。如果您只需要一个字符串数组,则不需要SVC类型。

如果您只是尝试使用主目录中项目的特殊格式化转换来构建字符串数组,则可以从这里开始说明追加和格式化字符串的用法:https://play.golang.org/p/eUKTKRxwfp

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-04-01 23:30:17

你不能在升的基础上加米。因此您不能将string类型附加到SVC记录列表中。

如果希望[]SVC作为输出(SVC列表),则需要实现一个解析器,该解析器将字符串转换为SVC对象并将其追加。

如果您希望[]string作为输出,则需要实现一个序列化程序,将SVC转换为字符串并追加它。

如何做到这一点是一个单独的问题,这超出了这个问题的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36345957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档