V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
mizuki9
V2EX  ›  Go 编程语言

go 是一门强类型语言

  •  
  •   mizuki9 · 2 天前 · 514 次点击
    • 所有变量都是有类型的
    • == != 的比较首先需要左右两边的东西是同一个类型
    • go 中的 nil 的使用只有相等与不相等比较
    • 对于普通类型变量与 nil 比较时,即
    var a KindA
    a == nil 本质上是 (KindA)(a) == (KindA)(nil)
    
    • 接口类型不是普通类型,接口是功能约束,即一种契约,某个具体类型实现接口契约后,就属于该接口类型。也就是说接口类型是动态类型,但我更喜欢称接口类型为功能契约,不是实际类型
    var i InterfaceA
    i == nil 本质上是 (nil)(i) == (nil)(nil)
     var b KindB
     b == nil 即 (KindB)(b) == (KindB)(nil)
     i = b
     i != nil 即 (KindB)(nil) != (nil)(nil) // 实际上这里是 (dynamicType)(nil) != (nil)(nil),此时已经不知道 dynamicType 的具体类型了
    
    • 接口类型 是 类型的类型。接口类型接受实际类型(实现接口契约)后成为一个真类型,但是是动态的,能操作的只有接口本身带有的契约功能。
    • 泛型 同样是 类型的类型。泛型接受实际类型后成为真类型,是静态的,操作它就是操作普通类型
    strobber16
        1
    strobber16  
       2 天前 via Android
    python 也是一门强类型语言
    reatang
        2
    reatang  
       2 天前
    `var a KindA` a 都已经申请内存了怎么会 == nil 呢
    maocat
        3
    maocat  
       2 天前 via Android
    这么多废话
    是不是强类型语言就看 int+string 报不报错
    guyeu
        4
    guyeu  
       2 天前
    请先定义“强类型”
    Deteriorator
        5
    Deteriorator  
       2 天前
    在板块首页看不到这个帖子, 有意思
    zhaoahui
        6
    zhaoahui  
       2 天前
    绕口令是吧
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2458 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:59 · PVG 09:59 · LAX 18:59 · JFK 21:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.