您的位置:首页 > 编程语言 > Go语言

第2课 Go类型、变量、常量、运算符

2016-07-27 17:09 381 查看
类型与变量

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)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: