当前位置: 首页 > news >正文

怎样做电商网站长治市住房保障和城乡建设管理局网站

怎样做电商网站,长治市住房保障和城乡建设管理局网站,扬中网站建设策划,seo综合查询怎么回事常量:Go 在“常量”设计上的创新有哪些? Go 语言在常量方面的创新包括下面这几点: 支持无类型常量;支持隐式自动转型;可用于实现枚举。 常量 Go 语言的常量是一种在源码编译期间被创建的语法元素。这是在说这个元素…

常量:Go 在“常量”设计上的创新有哪些?

  • Go 语言在常量方面的创新包括下面这几点:
    • 支持无类型常量;
    • 支持隐式自动转型;
    • 可用于实现枚举。

常量

  • Go 语言的常量是一种在源码编译期间被创建的语法元素。这是在说这个元素的值可以像变量那样被初始化,但它的初始化表达式必须是在编译期间可以求出值来的。
    • Go 常量一旦声明并被初始化后,它的值在整个程序的生命周期内便保持不变。
    • 我们在并发设计时不用考虑常量访问的同步,并且被创建并初始化后的常量还可以作为其他常量的初始表达式的一部分。
  • Go 是使用 var 关键字声明变量的。在常量这里,Go 语言引入 const 关键字来声明常量。而且,和 var 支持单行声明多个变量,以及以代码块形式聚合变量声明一样,const 也支持单行声明多个常量,以及以代码块形式聚合常量声明的形式:
    const Pi float64 = 3.14159265358979323846 // 单行常量声明
    // 以 const 代码块形式声明常量
    const (size int64 = 4096i, j, s = 13, 14, "bar" // 单行声明多个常量
    )
    
  • Go 语言规范规定,Go 常量的类型只局限于 Go 基本数据类型,包括数值类型、字符串类型,以及只有两个取值(true 和 false)的布尔类型。

无类型常量

  • Go 语言对类型安全是有严格要求的:即便两个类型拥有着相同的底层类型,但它们仍然是不同的数据类型,不可以被相互比较或混在一个表达式中进行运算。这一要求不仅仅适用于变量,也同样适用于有类型常量(Typed Constant)中。
  • 有类型常量与变量混合在一起进行运算求值的时候,也必须遵守类型相同这一要求,否则我们只能通过显式转型才能让代码正常工作。
  • 常量在声明时并没有显式地被赋予类型,在 Go 中,这样的常量就被称为无类型常量(Untyped Constant)。
  • 无类型常量也不是说就真的没有类型,它也有自己的默认类型,不过它的默认类型是根据它的初值形式来决定的。

隐式转型

  • 隐式转型说的就是,对于无类型常量参与的表达式求值,Go 编译器会根据上下文中的类型信息,把无类型常量自动转换为相应的类型后,再参与求值计算,这一转型动作是隐式进行的。
  • 但由于转型的对象是一个常量,所以这并不会引发类型安全问题,Go 编译器会保证这一转型的安全性。

实现枚举

  • Go 语言其实并没有原生提供枚举类型,在 Go语言中,我们可以使用 const 代码块定义的常量集合,来实现枚举。
  • 首先,Go 的 const 语法提供了“隐式重复前一个非空表达式”的机制:
    const (Apple, Banana = 11, 22Strawberry, GrapePear, Watermelon
    )
    
    • 这个代码里,常量定义的后两行并没有被显式地赋予初始值,所以 Go 编译器就为它们自动使用上一行的表达式:
      const (Apple, Banana = 11, 22Strawberry, Grape = 11, 22Pear, Watermelon = 11, 22
      )
      
    • 不过,仅仅是重复上一行显然无法满足“枚举”的要求,因为枚举类型中的每个枚举常量的值都是唯一的。所以,Go 在这个特性的基础上又提供了“神器”:iota。
      • iota 是 Go 语言的一个预定义标识符,它表示的是 const 声明块(包括单行声明)中,每个常量所处位置在块中的偏移值(从零开始)。
      • 同时,每一行中的 iota 自身也是一个无类型常量,可以自动参与到不同类型的求值过程中来,不需要我们再对它进行显式转型操作。
        const (Apple, Banana = iota, iota + 10 // 0, 10 (iota = 0)Strawberry, Grape // 1, 11 (iota = 1)Pear, Watermelon // 2, 12 (iota = 2)
        )
        
    • 如果一个 Go 源文件中有多个 const 代码块定义的不同枚举,每个 const 代码块中的 iota 也是独立变化的,也就是说,每个 const 代码块都拥有属于自己的 iota。
    • 每个 iota 的生命周期都始于一个 const 代码块的开始,在该 const 代码块结束时结束。
http://www.yayakq.cn/news/34057/

相关文章:

  • ICP备案和实际网站不是一个名字wordpress主题汉化版免费下载
  • 漳州 网站设计免费域名解析ip
  • 重庆智能网站建设推荐公司网站开发用什么软件
  • 建设智能网站在线logo
  • 怀化百度整站优化服务软件发布网
  • 中国建设网站的证件怎么查询公司网站百度推广
  • 甘肃网站建设网站制作官方网站的重要性
  • 织梦教育咨询企业网站模板河北网站建设方案详细
  • 河北提供网站制作公司哪家专业页面模板发布别人能看到吗
  • 淘宝客导购网站怎么做网站流量攻击软件
  • 百度联盟 网站备案信息在哪找公众号
  • 爱站工具的功能wordpress首页404伪静态
  • 扬州网站建设公元国际网页版抖音登录入口
  • 公司品牌的塑造网站建设wordpress汉化版主题
  • 南阳建设工程信息网站个人网站建什么类型的
  • 河北省建设机械协会网站首页电子印章在线制作网站
  • 北京网站设计制作网站wordpress上线apache
  • dw怎样做网站切换川畅咨询 的网络营销怎么做
  • 深圳做企业网站的公司推荐网站开发文件结构组成
  • 网站项目开发的流程女人和男人做爰网站
  • 网站建设的脑图规划培训网站开发需求说明书
  • 淘宝客做网站怎样推广北京鑫创网站建设
  • 网站建设中如何使用字体如何做个网站做cpa
  • 承德微网站建设网站设计大小
  • 用ul做的网站为何浮动不上去大连金州旅游景点有哪些
  • 建设企业网站就等于开展网络营销做网站的软件 知乎
  • 焦作市网站建设哪家好标书制作是干啥的
  • 黄埔区做网站6免费网站建站
  • 移动网站 用户体验重庆建设医院官方网站
  • 有哪些做婚礼平面设计的网站山东省工程建设招标信息网站