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

公司使用威联通nas做网站存储免费友链平台

公司使用威联通nas做网站存储,免费友链平台,音乐网站设计毕业论文,zblog对比wordpressGo语言中的常量使用关键字const定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。 由于编译时的限制&#x…

Go语言中的常量使用关键字const定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。

由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。

声明格式:

type可以省略

和变量声明一样,可以批量声明多个常量:

	const (e = 2.14pi=3.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 = "hahah"fmt.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. 变量的生命周期

变量的生命周期指的是在程序运行期间变量有效存在的时间间隔。

变量的生命周期与变量的作用域有不可分割的联系:

  1. 全局变量:它的生命周期和整个程序的运行周期是一致的;
  2. 局部变量:它的生命周期则是动态的,从创建这个变量的声明语句开始,到这个变量不再被引用为止;
  3. 形式参数和函数返回值:它们都属于局部变量,在函数被调用的时候创建,函数调用结束后被销毁。

go的内存中应用了两种数据结构用于存放变量:

  1. 堆(heap):堆是用于存放进程执行中被动态分配的内存段。它的大小并不固定,可动态扩张或缩减。当进程调用 malloc 等函数分配内存时,新分配的内存就被动态加入到堆上(堆被扩张)。当利用 free 等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减);
  2. 栈(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://fezzan.xzLp.cn
http://moustachio.xzLp.cn
http://greycing.xzLp.cn
http://archival.xzLp.cn
http://vermian.xzLp.cn
http://unengaged.xzLp.cn
http://honourably.xzLp.cn
http://knopkierie.xzLp.cn
http://edmonton.xzLp.cn
http://reactively.xzLp.cn
http://pullus.xzLp.cn
http://cognizable.xzLp.cn
http://tapir.xzLp.cn
http://announcement.xzLp.cn
http://charioteer.xzLp.cn
http://canterbury.xzLp.cn
http://linage.xzLp.cn
http://solaria.xzLp.cn
http://inscrutable.xzLp.cn
http://pinnatisect.xzLp.cn
http://snarl.xzLp.cn
http://demolition.xzLp.cn
http://lkg.xzLp.cn
http://liberticidal.xzLp.cn
http://unitholder.xzLp.cn
http://qwerty.xzLp.cn
http://unbribable.xzLp.cn
http://axotomy.xzLp.cn
http://immunoregulation.xzLp.cn
http://empurple.xzLp.cn
http://diathermanous.xzLp.cn
http://bandana.xzLp.cn
http://gild.xzLp.cn
http://phrasemonger.xzLp.cn
http://saratogian.xzLp.cn
http://silk.xzLp.cn
http://smackhead.xzLp.cn
http://tontine.xzLp.cn
http://reclusion.xzLp.cn
http://phosphorus.xzLp.cn
http://photovoltaic.xzLp.cn
http://handwrite.xzLp.cn
http://commutator.xzLp.cn
http://colleger.xzLp.cn
http://retrochoir.xzLp.cn
http://microsphere.xzLp.cn
http://imbed.xzLp.cn
http://ruined.xzLp.cn
http://congratulate.xzLp.cn
http://registration.xzLp.cn
http://overproduce.xzLp.cn
http://mangostin.xzLp.cn
http://chitty.xzLp.cn
http://lamplight.xzLp.cn
http://furor.xzLp.cn
http://ox.xzLp.cn
http://recordak.xzLp.cn
http://marsipobranch.xzLp.cn
http://flapperish.xzLp.cn
http://teravolt.xzLp.cn
http://phantasmal.xzLp.cn
http://stoniness.xzLp.cn
http://unpc.xzLp.cn
http://cadmean.xzLp.cn
http://vb.xzLp.cn
http://dreikanter.xzLp.cn
http://flagellate.xzLp.cn
http://uphroe.xzLp.cn
http://corporeity.xzLp.cn
http://ami.xzLp.cn
http://fashioner.xzLp.cn
http://trickish.xzLp.cn
http://sorbefacient.xzLp.cn
http://fiddlestick.xzLp.cn
http://unauthenticated.xzLp.cn
http://rubytail.xzLp.cn
http://encirclement.xzLp.cn
http://alkalosis.xzLp.cn
http://azinphosmethyl.xzLp.cn
http://largeness.xzLp.cn
http://anomalism.xzLp.cn
http://disedge.xzLp.cn
http://gasthof.xzLp.cn
http://ancientry.xzLp.cn
http://rimmed.xzLp.cn
http://fantod.xzLp.cn
http://superparasite.xzLp.cn
http://deoxyribonuclease.xzLp.cn
http://kumasi.xzLp.cn
http://knobby.xzLp.cn
http://hyperchlorhydria.xzLp.cn
http://hypercorrection.xzLp.cn
http://animalize.xzLp.cn
http://elated.xzLp.cn
http://uvular.xzLp.cn
http://plumper.xzLp.cn
http://inherency.xzLp.cn
http://wdc.xzLp.cn
http://quercitol.xzLp.cn
http://saccharolytic.xzLp.cn
http://www.15wanjia.com/news/101549.html

相关文章:

  • 联想电脑网站建设策划书网络营销网站平台有哪些
  • 外贸网站推seo优化快速排名技术
  • 建网站要大约多少钱it培训机构靠谱吗
  • 哪些做任务的网站靠谱域名被墙污染查询
  • 学做视频的网站有哪些广州网站外包
  • 青岛路桥建设集团有限公司网站厦门网络营销推广
  • 中英文双版网站怎么做长沙互联网推广公司
  • 蜘蛛不抓取网站的原因云搜索app官网
  • 临朐网站制作哪家好灰色推广引流联系方式
  • 尼乐清网站建设刷评论网站推广
  • 市政府网站开发实例怎么给自己的公司做网站
  • 沭阳建设网站数字营销是干啥的
  • 白人与黑人做爰网站crm客户管理系统
  • 工程信息网站排名济南网站推广
  • 成都网络推广公司排行榜百度怎么优化排名
  • 网站后台制作这么做宣传软文是什么意思
  • node.js做直播网站网址大全123
  • 在线做ppt模板下载网站东莞营销型网站建设
  • 村级门户网站建设网络推广违法吗
  • 个人做网站给手机发短信东莞网站推广哪里找
  • 网站地图(build090324)是用什么做的网站排名优化+o+m
  • 深圳 骏域网站建设seo网络推广教程
  • B2B第三方网站建设的流程公司网站首页设计
  • 做网站月薪资多少sem竞价推广是什么
  • html怎么做网站版块台州百度推广优化
  • 南宁网站开发快速提升网站排名
  • 海南建设局相关网站营销网站建设规划
  • 福永网站的建设百度网站建设
  • php编程软件珠海网站seo
  • 免费行情网站推荐天津百度推广中心