第2课 Go类型、变量、常量、运算符
2016-07-27 17:09
381 查看
类型与变量
常量与运算符
利用iota实现一个常量枚举
package main import ( "fmt" "math" ) type ( byte int8 rune int32 文本 string //别名 ) var ( name string = "HUIDI" help bool = false ) //全局变量的声明方式 func main() { fmt.Println(name) fmt.Println(help) fmt.Println("------") //输出全局变量 var b 文本 b = "中文类型名" fmt.Println(b) fmt.Println(math.MaxInt32) fmt.Println("------") var a, c = 1, 3 //声明方式 fmt.Println(a + c) fmt.Println("------") d := 2 //声明方式 fmt.Println(d) fmt.Println("------") f, g := "我是f", "我是g" //多个变量的声明方式 fmt.Println(f + g) fmt.Println("------") q, _, e, r := 1, 2, 3, 4 //可以用_来忽略对应位置。 fmt.Println(q) fmt.Println(e) fmt.Println(r) fmt.Println("------") /* Go中不存在隐式转换,所有类型转换必须显式声明 转换只能发生在两种互相兼容的类型之间 类型转换的格式: <ValueA> [:] = <TypeOfValueA>(<ValueB>) 注意,当ValueA还没有被声明的时候使用冒号 */ var aa float32 = 100.1 fmt.Println(aa) bb := int(aa) fmt.Println(bb) }
常量与运算符
package main import ( "fmt" ) /* 常量的值在编译的时候就已经确定了 常量的定义格式与变量基本相同 等号右侧必须是常量或者常量表达式 常量表达式中的函数必须是内置函数 */ const a int = 1 const b = 'A' const ( c = a d = a + 1 e = a + 2 ) const f, g, h = 1, "2", "h" /* 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式 使用相同的表达式不代表具有相同的值 iota是常量的计数器,从0开始,组中每定义一个常量自动递增1 通过初始化规则与iota可以达到枚举的效果 每遇到一个cost关键字,iota会重置为0 */ const ( //aa与bb都为'A' aa = 'A' bb cc = iota dd //dd的值为3 ) const ( ee = iota ff //ff的值为1 ) func main() { /* Go 中的运算符都是从左向右结合的 优先级(从高到低) ^ ! (一元运算符) * / % << >> & &^ + - | ^ (二元运算符) == != < <= >= > <- (专门用于channel) && || */ //<<左移 fmt.Println(1 << 10) //左移10个位,得到结果1024 fmt.Println(1 << 10 << 10 >> 10) //左移动10个位,再左移动10个位,再右移10个位 /* 位运算符(看二进制来进行运算) 6 : 0110 11: 1011 -------- & 0010 对每一位做与运算符 | 1111 对每一位做或运算符 ^ 1101 对每一位只有一个1才是1,否则是0 &^ 0100 对每一位,下面的是1,上面的就要变为0,下面是0,上面不做变化 */ fmt.Println("--------") a := 1 if a > 0 && (10/a) > 1 { fmt.Println("OK") } //如果a大于0,再判断&&后面的条件,如果前面的条件已经是假的,则不走后面的判断了 }
利用iota实现一个常量枚举
package main import ( "fmt" ) const ( B float64 = 1 << (iota * 10) KB MB GB TB PB EB ZB YB ) //一个计算机存储单位的枚举 func main() { fmt.Println(GB) }
相关文章推荐
- 如何使用Leangoo自动生成燃尽图
- go语言json操作指南
- django--静态文件(九)
- Google推荐的图片加载库Glide介绍
- 【Django】git建仓上传时遇到的小问题
- Google官方下拉刷新组件SwipeRefreshLayout
- Django实际站点项目开发经验谈
- Go语言接口定义与用法示例
- hdu-1533 Going Home(最小费用最大流)
- POJ - 3622/USACO - Dec07 Gold Gourmet Grazers 挑剔的美食家 重庆一中高2018级竞赛班第五次测试 2016.7.26 Problem 4
- 灰度世界算法(Gray World Algorithm)
- django 快速实现完整登录系统(cookie)
- Go语言基础学习教程
- Django中templates使用的补充
- Go语言函数学习教程
- Go语言eclipse环境搭建图文教程
- ubuntu下安装sogou输入法和consolas字体
- 【02】KVM中小企业实践-宿主机安装
- Django中url匹配规则的补充
- Ubuntu下Django的安装