go-常量与运算符

常量的定义

  • 常量的值在编译时就已经确定
  • 常量的定义格式与变量基本相同
  • 等号右侧必须是常量或者常量表达式
  • 常量表达式中的函数必须是内置函数

常量的初始化规则与枚举

  • 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式
  • 使用相同的表达式不代表具有相同的值
  • iota是常量的计数器,从0开始,组中每定义1个常量自动递增1
  • 通过初始化规则与iota可以达到枚举的效果
  • 每遇到一个const关键字,iota就会重置为0

注意:常量的初始化必须是常量

        

package main

import(
	"fmt"
)

//单个常量
const a int  = 55
const b string  = "你好"

//常量组
const(
	e = "世界"
	f = a
	g
)
const q,p,w  = 1,2,3
const (
	u,v,t = 1,2,3
)

const (
	m = "A "
	n
	l = iota
	k
)

func main()  {
	fmt.Println(a,e,g) //55 世界 世界
	fmt.Println(u,v,t) // 1 2 3
	fmt.Println(q,p,w) // 1 2 3
	fmt.Println(m,n,l,k) //65 65 2 3
}

  常量的编码规范:常量的命名最好以全大写字母来表示,前加’_'或小写字母c表示该常量在该包内部使用,不被外部所调用

运算符

  • Go中的运算符均是从左至右结合
  • 优先级(从高到低)
  • ^ !                             (一元运算符)
  • *    /    %   <<(左移) >>(右移)    &(和)       &^     
  • +  -  |  ^                    (二元运算符)
  • ==  != < <=  >= > 
  • <-                             (专门用于并发channel)
  • &&(and)
  • ||
#二进制位运算

/*
 6 : 0110
11 : 1011
-----------

&    0010    两个都是1则为1,否则为0
|    1110    如果有一个是1则为1
^    1101    两个只有其中一个是1则为1,否则为0
&^   0100    如果第二个数为1,则第一个数改为0,否则无变化为第一位数
*/

  利用常量组实现存储单位的转换

package main

import "fmt"

const (
	B float64=1<<(iota*10)
	KB
	MB
	GB
	TB
)

func main()  {
	fmt.Println(B)
	fmt.Println(KB)
	fmt.Println(MB)
	fmt.Println(GB)
	fmt.Println(TB)
}

  

 

posted @ 2017-08-27 18:53  amchen  阅读(354)  评论(0编辑  收藏  举报