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

go 是一门强类型语言

  •  
  •   mizuki9 · 1 天前 · 484 次点击
    • 所有变量都是有类型的
    • == != 的比较首先需要左右两边的东西是同一个类型
    • 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  
       1 天前 via Android
    python 也是一门强类型语言
    reatang
        2
    reatang  
       1 天前
    `var a KindA` a 都已经申请内存了怎么会 == nil 呢
    maocat
        3
    maocat  
       1 天前 via Android
    这么多废话
    是不是强类型语言就看 int+string 报不报错
    guyeu
        4
    guyeu  
       1 天前
    请先定义“强类型”
    Deteriorator
        5
    Deteriorator  
       1 天前
    在板块首页看不到这个帖子, 有意思
    zhaoahui
        6
    zhaoahui  
       1 天前
    绕口令是吧
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2521 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 04:43 · PVG 12:43 · LAX 21:43 · JFK 00:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.