go常量、枚举类型、iota

常量

go常量使用const关键字声明,常量没有类型,例如在开算术平方根时,不需要加转换

/*
常量
*/
package main
import (
   "fmt"
   "math"
)

func main() {
   const a, b = 3, 4
   //var len int = (int)(math.Sqrt(float64(a*a + b*b)))
   //常量没有类型,这里可以不加float64转换
   var len int = (int)(math.Sqrt(a*a + b*b))
   fmt.Println("len = ", len)
}

枚举

go没有枚举关键字enum,可以用const变量来代替

/*

go 枚举类型
go没有枚举关键字enum,可以用const变量来代替

*/

package main

import "fmt"

func main() {

	const (
		java   = 1
		cpp    = 2
		golang = 3
		python = 4
	)

	fmt.Println(java, cpp, golang, python)

	const (
		beijing = iota
		shangahi
		_
		shenzhen
	)
	fmt.Println(beijing, shangahi, shenzhen) //输出 0 1 3
}

小技巧:如果值不需要,可以用"_"表示

iota的用法

iota默认值是0,往下递增,例如

package main

import "fmt"

func main() {

	const (
		zero = iota
		one
		two
		three
	)

	fmt.Println(zero, one, two, three)

	//iota的神奇用法
	const (
		byte = 1 << (10 * iota)
		kb
		mb
		gb
	)
	fmt.Println(byte, kb, mb, gb)
}

位运算介绍

位运算符——左移、右移
>> :右移 最高位是0,左边补齐0;最高为是1,左边补齐1
<< :左移 左边最高位丢弃,右边补齐0
>>>:无符号右移 无论最高位是0还是1,左边补齐0

在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方

右移一位相当于除2,右移n位相当于除以2的n次方。

12>>1 结果:6 12/2^1
12>>2 结果:3 12/2^2

12<<1 结果 :24 ` 12x2^1
12<<2 结果 :48 12x2^2

位运算基础
&
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
|
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
~
取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1
<<
左移
用来将一个数的各二进制位全部左移N位,右补0
>>
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值