首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能将type []rune用作追加中的类型rune

不能将type []rune用作追加中的类型rune
EN

Stack Overflow用户
提问于 2015-02-21 07:38:42
回答 1查看 15.2K关注 0票数 5
代码语言:javascript
复制
package main

var lettersLower = []rune("abcdefghijklmnopqrstuvwxyz")
var lettersUpper = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ")

func main() {
    x := append(lettersLower, lettersUpper)
}

为什么这不起作用?如何添加lettersLowerlettersUpper

代码语言:javascript
复制
prog.go:7: cannot use lettersUpper (type []rune) as type rune in append

https://play.golang.org/p/ovx_o2rKPC

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-21 07:59:53

那是因为append doesn't take a list to append, but rather one or more to append。您可以通过在append的第二个参数上使用...来适应这一点

代码语言:javascript
复制
package main

import "fmt"

var lettersLower = []rune("abcdefghijklmnopqrstuvwxyz")
var lettersUpper = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ")

func main() {
    x := append(lettersLower, lettersUpper...)
    fmt.Println(len(x))
}

Try it out on the Playground

请注意,append并不总是重新分配底层数组(这会导致性能和内存使用方面的问题)。就本示例而言,您很好,但如果您试图将同一内存用于多个目的,则可能会受到影响。一个(人为的,也许不清楚的) example

代码语言:javascript
复制
package main

import (
    "fmt"
    "os"
)

func main() {
    foo := []byte("this is a BIG OLD TEST!!\n")
    tst := []byte("little test")
    bar := append(foo[:10], tst...)

    // now bar is right, but foo is a mix of old and new text!
    fmt.Print("without copy, foo after:  ")
    os.Stdout.Write(foo)

    // ok, now the same exercise but with an explicit copy of foo
    foo = []byte("this is a BIG OLD TEST!!\n")
    bar = append([]byte(nil), foo[:10]...) // copies foo[:10]
    bar = append(bar, tst...)

    // this time we modified a copy, and foo is its original self
    fmt.Print("with a copy, foo after:   ")
    os.Stdout.Write(foo)
}

当您尝试在附加到foo的子切片后打印它时,会得到新旧内容的奇怪组合。

在共享底层数组有问题的情况下,您可以使用字符串(字符串字节是不可变的,这是防止意外覆盖的一种非常有效的保护措施),也可以像我上面对append([]byte(nil), foo[:10]...)所做的那样进行复制。

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

https://stackoverflow.com/questions/28640097

复制
相关文章

相似问题

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