dongxi1943 2013-07-13 02:11
浏览 33
已采纳

转到:将基元切片转换为其别名的切片

I'm trying to do something along these lines:

package main                                                                                                                                                                                                                                   

import (          
    "fmt"         
)                 

type StringWrap string

func main() {     
    s := []string{"a","b","c"}
    sw := []StringWrap(s) //ERROR: cannot convert s (type []string) to type []StringWrap
    fmt.Println(sw)
}

Am I doing something wrong? Or is this simply a limitation in go?

  • 写回答

1条回答 默认 最新

  • dpqjvoq9033 2013-07-13 02:53
    关注

    The Go Programming Language Specification

    Types

    A type determines the set of values and operations specific to values of that type. A type may be specified by a (possibly qualified) type name or a type literal, which composes a new type from previously declared types.

    Type      = TypeName | TypeLit | "(" Type ")" .
    TypeName  = identifier | QualifiedIdent .
    TypeLit   = ArrayType | StructType | PointerType | FunctionType |
                InterfaceType | SliceType | MapType | ChannelType .
    

    Named instances of the boolean, numeric, and string types are predeclared. Composite types—array, struct, pointer, function, interface, slice, map, and channel types—may be constructed using type literals.

    Each type T has an underlying type: If T is a predeclared type or a type literal, the corresponding underlying type is T itself. Otherwise, T's underlying type is the underlying type of the type to which T refers in its type declaration.

       type T1 string
       type T2 T1
       type T3 []T1
       type T4 T3
    

    The underlying type of string, T1, and T2 is string. The underlying type of []T1, T3, and T4 is []T1.

    Conversions

    Conversions are expressions of the form T(x) where T is a type and x is an expression that can be converted to type T.

    A non-constant value x can be converted to type T in the case: x's type and T have identical underlying types.

    For example,

    package main
    
    import "fmt"
    
    type StringSliceWrap []string
    
    func main() {
        s := []string{"a", "b", "c"}
        ssw := StringSliceWrap(s)
        fmt.Println(ssw)
    }
    

    Output:

    [a b c]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding