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

建网站 备案万荣做网站

建网站 备案,万荣做网站,wordpress app 源码,莱芜seo公司Go语言中的常量使用关键字const定义#xff0c;用于存储不会改变的数据#xff0c;常量是在编译时被创建的#xff0c;即使定义在函数内部也是如此#xff0c;并且只能是布尔型、数字型#xff08;整数型、浮点型和复数#xff09;和字符串型。 由于编译时的限制#x…Go语言中的常量使用关键字const定义用于存储不会改变的数据常量是在编译时被创建的即使定义在函数内部也是如此并且只能是布尔型、数字型整数型、浮点型和复数和字符串型。 由于编译时的限制定义常量的表达式必须为能被编译器求值的常量表达式。 声明格式 type可以省略 和变量声明一样可以批量声明多个常量 const (e 2.14pi3.14) 所有常量的运算都可以在编译期完成这样不仅可以减少运行时的工作也方便其他代码的编译优化当操作数是常量时一些运行时的错误也可以在编译时被发现例如整数除零、字符串索引越界、任何导致无效浮点数的操作等。 常量间的所有算术运算、逻辑运算和比较运算的结果也是常量对常量的类型转换操作或以下函数调用都是返回常量结果len、cap、real、imag、complex 和 unsafe.Sizeof。 因为它们的值是在编译期就确定的因此常量可以是构成类型的一部分 如果是批量声明的常量除了第一个外其它的常量右边的初始化表达式都可以省略如果省略初始化表达式则表示使用前面常量的初始化表达式对应的常量类型也是一样的。例如 const (a 1bc 2d ) fmt.Println(a, b, c, d) // 1 1 2 2 1.1 iota 常量生成器 常量声明可以使用 iota 常量生成器初始化它用于生成一组以相似规则初始化的常量但是不用每行都写一遍初始化表达式。 在一个 const 声明语句中在第一个声明的常量所在的行iota 将会被置为 0然后在每一个有常量声明的行加1 比如定义星期日到星期六从0-6 2. 指针 指针pointer在Go语言中可以被拆分为两个核心概念 类型指针允许对这个指针类型的数据进行修改传递数据可以直接使用指针而无须拷贝数据类型指针不能进行偏移和运算。切片由指向起始元素的原始指针、元素数量和容量组成。 受益于这样的约束和拆分Go语言的指针类型变量即拥有指针高效访问的特点又不会发生指针偏移从而避免了非法修改关键性数据的问题。 同时垃圾回收也比较容易对不会发生偏移的指针进行检索和回收。 切片比原始指针具备更强大的特性而且更为安全。 切片在发生越界时运行时会报出宕机并打出堆栈而原始指针只会崩溃。 2.1 如何理解指针 var a int 10 如果用大白话来解释上述语句 在内存中开辟了一片空间空间内存放着数值10这片空间在整个内存当中有一个唯一的地址用来进行标识指向这个地址的变量就称为指针 如果用类比的说明 内存比作酒店每个房间就是一块内存上述代码表示为定了一间房间a让10住进了房间房间有一个门牌号px这个px就是房间的地址房卡可以理解为就是指针指向这个地址。 一个指针变量可以指向任何一个值的内存地址它所指向的值的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节占用字节的大小与所指向的值的大小无关。 当一个指针被定义后没有分配到任何变量时它的默认值为 nil。 每个变量在运行时都拥有一个地址这个地址代表变量在内存中的位置。 Go语言中使用在变量名前面添加操作符前缀来获取变量的内存地址取地址操作格式如下 //其中 v 代表被取地址的变量变量 v 的地址使用变量 ptr 进行接收ptr 的类型为*T称做 T 的指针类型*代表指针。 ptr : v // v 的类型为 T var cat int 1var str string hahahfmt.Printf(%p %p, cat, str) //0xc00000a0d8 0xc000020070 变量、指针和地址三者的关系是每个变量都拥有地址指针的值就是地址 当使用操作符对普通变量进行取地址操作并得到变量的指针后可以对指针使用*操作符也就是指针取值 var room int 10ptr : roomfmt.Println(ptr) //0xc000096068fmt.Printf(%T\n, ptr) //*intfmt.Println(*ptr) //10 取地址操作符和取值操作符*是一对互补操作符取出地址*根据地址取出地址指向的值 变量、指针地址、指针变量、取地址、取值的相互关系和特性如下 对变量进行取地址操作使用操作符可以获得这个变量的指针变量。指针变量的值是指针地址。对指针变量进行取值操作使用*操作符可以获得指针变量指向的原变量的值。 2.3 创建指针的另一种方法 Go语言还提供了另外一种方法来创建指针变量格式如下 new(类型) str : new(string) *str 码神之路Go语言教程 fmt.Println(*str) new() 函数可以创建一个对应类型的指针创建过程会分配内存被创建的指针指向默认值。 2.4 指针小案例 获取命令行的输入信息 Go语言内置的 flag 包实现了对命令行参数的解析flag 包使得开发命令行工具更为简单。 3. 变量的生命周期 变量的生命周期指的是在程序运行期间变量有效存在的时间间隔。 变量的生命周期与变量的作用域有不可分割的联系 全局变量它的生命周期和整个程序的运行周期是一致的局部变量它的生命周期则是动态的从创建这个变量的声明语句开始到这个变量不再被引用为止形式参数和函数返回值它们都属于局部变量在函数被调用的时候创建函数调用结束后被销毁。 go的内存中应用了两种数据结构用于存放变量 堆heap堆是用于存放进程执行中被动态分配的内存段。它的大小并不固定可动态扩张或缩减。当进程调用 malloc 等函数分配内存时新分配的内存就被动态加入到堆上堆被扩张。当利用 free 等函数释放内存时被释放的内存从堆中被剔除堆被缩减栈(stack)栈又称堆栈 用来存放程序暂时创建的局部变量也就是我们函数的大括号{ }中定义的局部变量。 栈是先进后出往栈中放元素的过程称为入栈取元素的过程称为出栈。 栈可用于内存分配栈的分配和回收速度非常快 在程序的编译阶段编译器会根据实际情况自动选择在栈或者堆上分配局部变量的存储空间不论使用 var 还是 new 关键字声明变量都不会影响编译器的选择。 func f() {x : 10global x }func g() {y : new(int)*y 1 }上述代码中函数 f 里的变量 x 必须在堆上分配因为它在函数退出后依然可以通过包一级的 global 变量找到虽然它是在函数内部定义的。 用Go语言的术语说这个局部变量 x 从函数 f 中逃逸了。 相反当函数 g 返回时变量 y 不再被使用也就是说可以马上被回收的。因此y 并没有从函数 g 中逃逸编译器可以选择在栈上分配 *y 的存储空间也可以选择在堆上分配然后由Go语言的 GC垃圾回收机制回收这个变量的内存空间。 4. 类型别名 类型别名是 Go 1.9 版本添加的新功能主要用于解决代码升级、迁移中存在的类型兼容性问题。 格式 //TypeAlias 只是 Type 的别名本质上 TypeAlias 与 Type 是同一个类型就像一个孩子小时候有小名、乳名上学后用学名英语老师又会给他起英文名但这些名字都指的是他本人。 type TypeAlias Type 还有一种是类型定义 //定义Name为Type类型 ,定义之后 Name为一种新的类型 type Name Type 类型别名与类型定义表面上看只有一个等号的差异那么它们之间实际的区别有哪些呢 //将newInt定义为int类型type newInt int//将int取一个别名叫intAlicetype intAlice intvar a newIntfmt.Printf(%T\n, a) //main.newIntvar b intAlice //IntAlias 类型只会在代码中存在编译完成时不会有 IntAlias 类型。fmt.Printf(%T\n, b) //int 8. 字符串与其他数据类型的转换 整数 与 字符串 var str1 string 1//字符串转整型res, _ : strconv.Atoi(str1)fmt.Printf(%T\n, res)//整型转字符串myString : strconv.Itoa(res)fmt.Printf(%T, myString) 浮点数 与字符串
http://www.w-s-a.com/news/661719/

相关文章:

  • dede 网站模板哈尔滨房产信息网官方网站
  • 设计师个人作品集模板班级优化大师网页版登录
  • 高端网站建设教学网站开发前期准备工作
  • 网站评论列表模板设计官网的
  • 怎么做可以访问网站ui设计自学学的出来吗
  • 网站如何接入支付宝软件开发工作内容描述
  • 廊坊网站建设搭建整合营销传播的效果表现为
  • 网站服务器在本地是指园林绿化
  • 公司网站建设需要什么科目网站代运营价格
  • 网站建设前的ER图ppt模板图片 背景
  • 做一个网站花多少钱网站导航营销步骤
  • 仙桃网站定制做房产网站能赚钱吗
  • 西安网站制作模板最新源码
  • 南京江宁网站建设大学高校网站建设栏目
  • 模板网站建设明细报价表做网站第一
  • 公司网站建设系统软件开发 上海
  • 怎么让公司建设网站固安县建设局网站
  • 360免费建站官网入口手机网站建设设计
  • 商城网站建站系统dw如何做网页
  • 网站建设的公司收费我有网站 怎么做淘宝推广的
  • 网站建设策划书事物选题手机兼职app
  • html5 微网站模版wordpress博客速度很慢
  • 怎么做五个页面网站网络推广如何收费
  • 上虞宇普电器网站建设江西建筑人才网
  • 在吗做网站商城一个网站需要服务器吗
  • 先做网站再备案吗中山微网站建设报价
  • 树莓派可以做网站的服务器吗网站建设与设计ppt
  • 网站访问速度分析网站怎么做让PC和手机自动识别
  • 网站建设要考西宁网站建设多少钱
  • 网站开发公司东莞网站推广计划书具体包含哪些基本内容?