V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lambdaxs
V2EX  ›  程序员

一个 GO 语言的疑问,初学勿喷😐

  •  
  •   lambdaxs · 2018-02-28 17:22:57 +08:00 · 3071 次点击
    这是一个创建于 2464 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GO 语言

    //可以进行赋值
    var a interface{}
    var b int
    a = b
    
    //a = b 编译器报错 
    var a []interface{}
    var b []int
    a = b
    

    为什么 interface 类型的切片就没法直接转换赋值?

    12 条回复    2018-02-28 19:05:18 +08:00
    lambdaxs
        1
    lambdaxs  
    OP
       2018-02-28 17:24:08 +08:00
    顶一哈! d=====( ̄▽ ̄*)b
    brickyang
        2
    brickyang  
       2018-02-28 17:28:05 +08:00   ❤️ 1
    切片的底层是数组,这样相当于把两个不同类型的数组进行赋值

    https://blog.go-zh.org/go-slices-usage-and-internals
    zhs227
        3
    zhs227  
       2018-02-28 17:29:06 +08:00   ❤️ 1
    这是数组赋值 ,不是接口转换。
    Shadas
        4
    Shadas  
       2018-02-28 17:30:45 +08:00   ❤️ 1
    lambdaxs
        5
    lambdaxs  
    OP
       2018-02-28 17:31:37 +08:00
    @brickyang get 应该写成 var a interface{}; var b []int ;a = b;
    lambdaxs
        6
    lambdaxs  
    OP
       2018-02-28 17:34:56 +08:00
    @Shadas get
    是可以写成这样
    a := []int{1,2,3}
    b := make([]interface{}, len(a))
    for i, d := range a {
    b[i] = a
    }
    Michaelssss
        7
    Michaelssss  
       2018-02-28 17:40:43 +08:00
    ....你这不是 Go 初学。。。你是 C 都没学。。。


    =是赋值,你的切片都不是值只是一个 symbol,你怎么赋值。。。
    flyzero
        8
    flyzero  
       2018-02-28 17:44:51 +08:00
    @Michaelssss 看你头像和我 boss 一样,逃
    pmispig
        9
    pmispig  
       2018-02-28 17:56:39 +08:00
    var a interface{}
    var b []int
    a = b
    这样可以
    lambdaxs
        10
    lambdaxs  
    OP
       2018-02-28 17:59:49 +08:00
    @Michaelssss
    var a []int
    var b []int
    a = b
    是可以的😐
    lambdaxs
        11
    lambdaxs  
    OP
       2018-02-28 17:59:59 +08:00
    @Michaelssss

    var a []int
    var b []int
    a = b
    是可以的😐
    douglarek
        12
    douglarek  
       2018-02-28 19:05:18 +08:00
    第一种 int 是 interface{} 第二种是不同的 slice,类型不同而且不存在父子关系
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3190 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:12 · PVG 21:12 · LAX 05:12 · JFK 08:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.