初识golang,变量,常量,iota的学习

vcity · · 3794 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
变量的定义:
go总使用var来声明变量,在函数外面声明变量的方式有 var 变量1, 变量2, 变量3 [int] = 1, 2, 3,其中int这个类型声明可以省略。如果在函数内部声明可以使用以下这种更加简便的方法 变量1, 变量2, 变量3 := 1, 2, 3,这种方式只能在函数内使用。
 
常量的使用:
go中常量可以定义为数组、布尔值、字符串等类型。使用const 常量名 [常量类型] = 常量值。
 
也可以采用分组声明的方式,如:
const pi = 3.14
const prefix = "Go_" 
var i int
var sum int
 
采用分组后:
const (
    pi = 3.14 
    prefix = "Go_" 
)
 
var (
    i int
    sum int 
)

在分组声明是,const分组的第一个常量被默认的设置为0值,第二个及后续的常量被默认设置为他前面那个常量的表达式,如果那个常量的值似乎iota,则它也被设置为iota,iota是go的一个关键字,它默认值为0,并逐步增1,注意:只有iota在遇到一个const关键字时,它才会被重置为0,如:

const (

    i = iota

    j = 3.14

    k = iota

    l 

) 那么打印出来的结果是 i=0,j=3.14,k=2,l=3 

const (
    _ = iota
    kb = 1 << (10 * iota)
    mb
    gb
    tb
    pb
)
可以在同一行使用多个iota,他们会各种递增不会相关干扰。
const (
    i , j  = 2*iota, iota
    m, n
)
 
内置类型:
布尔值:go中布尔值类型的值只有两个,分别是true和false,它与其他值不能相互转化,如和1、0。
数组类型:go同时指出无符号和带符号两种,其中有rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64,其中rune为int32,btye为uint8的别称。需要注意的是,这些类型的变量之间不允许互相赋值和操作,不然后在编译时报错。如:
var a int8
var b int32
var c = a + b

这样是不行的,还有int和int32不可以相互操作。浮点型有float32和float64两种,没有float类型。复试类型,go默认支持complex128(64位实数+64为虚数),也有complex64。

字符串:go中字符串采用urf-8编码,字符串用一对双引号或反引号来定义,字符串是不可变的,如果要改变字符串的值,可以使用[]rune来强制转换,再修改完成后再用string()转换回来。如:
s := "hello"
c := []rune(s)
c[0] = 'c'
s := string(c)
注意如果类型中存放值不超过类型范围,类型可以不用强制转换,如byte := 'c',可以来存放字符。声明多行字符串可以使用反引号来声明,字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。

注意:go对于已声明而未使用的变量,常量,或引入的包未使用,都会报错。go的一些默认行为,大写字母开头的变量可导出,也就是在其他包中可以访问,是公用变量,小写字母开头的为私有变量。函数名也一样,大写字母开头的为public函数,小写字母开头的为private函数。

有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:vcity

查看原文:初识golang,变量,常量,iota的学习

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

3794 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传