亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

Go語言中你所不知道的位操作用法

2020-04-01 19:01:03
字體:
來源:轉載
供稿:網友

前言

因為之前一直忽略的就是所有語言中關于位操作,覺得用處并不多,可能用到也非常簡單的用法,但是其實一直忽略的是它們的用處還是非常大的,下面先回顧一下位操作符的基礎

位操作符

與操作:&

1 & 1 = 1

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

或操作:!

1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 & 0 = 0

異或:^

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

左移:<<

1 << 10 = 1024

1 << 20 = 1M

1 << 30 = 1G

右移:>>

1024 >> 10 = 1

1024 >>1 = 512

1024 >>2 = 256

關于上述知識的一個應用實例

可能這個例子在實際中用并不是特別嚴謹,但是也提供了我們寫代碼的一種思路

這里拿微博或者qq用戶的特權為例子:

一個qq號可以用VIP會員,SVIP超級會員,藍鉆用戶,黃鉆用戶,紅鉆用戶....

我們通常的想法可能是如果數據庫中存儲自己會給用戶存這個字段表示這個用戶開通了哪些特權

我們在代碼中的寫法可能也是如下所示:

package mainimport ( "fmt")type users struct { name string flag uint8 vip bool svip bool blue bool red bool yellow bool}func setVip(user users) users { user.vip = true return user}func isVip(user users) { if user.vip {  fmt.Println("user is vip") } else {  fmt.Println("user is not vip") }}func binaryTest() { var user users user.name = "test01" user.vip = true isVip(user) user.vip = false isVip(user)}func main() { binaryTest()}

這種實現方式也可以,但是明顯我們需要為每個類型都做操作,并且如果以后又有更多的各種各樣的會員和鉆有需要添加新的,所以并不是最佳方法,下面我們通過位操作來實現上述的功能,代碼如下:

package mainimport (  "fmt")type users struct {  name string  flag uint8}// 這里通過位移的方式默認00000 從左邊一次為vip,svip,blue,red,yellowconst (  vip  = 1  svip = (1 << 1)  blue = (1 << 2)  red  = (1 << 3)  yello = (1 << 4))// setFlag 用于設置用戶開通了哪些特權func setFlag(user users, isSet bool, typeFlag uint8) users {  if isSet == true {    user.flag = user.flag | typeFlag  } else {    user.flag = user.flag ^ typeFlag  }  return user}//isFlag 用于判斷用戶是否開通某項特權func isFlag(user users, typeFlag uint8) bool {  result := user.flag & typeFlag  return result == typeFlag}func binaryTest() {  var user users  user.name = "coder"  user.flag = 0  //判斷用戶是否是vip  result := isFlag(user, vip)  fmt.Printf("user is Vip:%t/n", result)  //給用戶開通vip,并看用戶是否開通vip  user = setFlag(user, true, vip)  result = isFlag(user, vip)  fmt.Printf("user is Vip:%t/n", result)  //取消用戶的vip,并查看用戶是否還是vip  user = setFlag(user, false, vip)  result = isFlag(user, vip)  fmt.Printf("user is Vip:%t/n", result)}func main() {  binaryTest()}

上面代碼就是一種位運算一種非常巧妙的用法,當新添加各種特權的時候只需要在最開始定義的常亮那里添加一行代碼即可,就可以直接實現對這種特權的設置和取消,以及查看是否開通。

附常見的>>右移 <<左移 感覺右移左移應該也是非常常見的使用了

繼續看例子:

package mainimport "fmt"func main() {  x := 2  y := 4  fmt.Println(x<<1)  fmt.Println(y>>1)}output:4 2

進行轉化為二進制 然后向左或者向右移動。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲性日韩精品一区二区| 久久久女女女女999久久| 久久国产精品视频| 久久久久久成人| 国产成人精品一区二区| 亚洲午夜未满十八勿入免费观看全集| 亚洲一区二区三区久久| 97视频在线观看免费高清完整版在线观看| 另类美女黄大片| 成人免费xxxxx在线观看| 91av免费观看91av精品在线| 欧美日韩一区二区免费视频| 亚洲综合社区网| 国产精品成人观看视频国产奇米| 亚洲精品v欧美精品v日韩精品| 欧美大片网站在线观看| 国产精品一区二区在线| 亚洲毛片在线免费观看| 影音先锋欧美在线资源| 欧美激情视频网址| 国产女精品视频网站免费| 97香蕉久久超级碰碰高清版| 欧美日韩亚洲成人| 国产91网红主播在线观看| 欧美国产日韩视频| 亚洲激情小视频| 国产精品视频网址| 中文字幕日韩专区| 国产成人精品日本亚洲| 日韩精品在线影院| 亚洲片在线观看| 欧美有码在线观看| 精品久久久久久久久久久久久久| 精品激情国产视频| 91啪国产在线| 亚洲欧洲自拍偷拍| 亚洲免费视频观看| 欧美老妇交乱视频| 奇米一区二区三区四区久久| 欧美成年人在线观看| 97精品在线视频| 中文字幕日韩视频| 色婷婷综合成人av| 亚洲a成v人在线观看| 日韩电影中文字幕在线| 国产亚洲福利一区| 国产亚洲美女精品久久久| 成人激情av在线| 91久久精品日日躁夜夜躁国产| 国产精品视频自拍| 91精品国产777在线观看| 亚洲国产精品久久精品怡红院| 久久久欧美一区二区| 欧美丝袜美女中出在线| 亚洲精品欧美一区二区三区| 国产精品成人国产乱一区| 青草热久免费精品视频| 国产不卡一区二区在线播放| 成人黄色av免费在线观看| 亚洲第一精品夜夜躁人人爽| 久久久久在线观看| 精品国产一区二区三区在线观看| 久久夜色精品国产亚洲aⅴ| 亚洲欧美精品中文字幕在线| 日韩成人av在线播放| 亚洲一区二区三区毛片| 色噜噜国产精品视频一区二区| 国产一区二区三区视频在线观看| 亚洲精品720p| 久久久久久久爱| 国产精品大陆在线观看| 亚洲成av人片在线观看香蕉| 久久国产精品网站| 热久久这里只有精品| 亚洲天堂av女优| 欧美久久精品午夜青青大伊人| 欧美电影免费看| 国产成人av在线播放| 亚洲综合视频1区| 日韩av在线免播放器| 国产精品日日摸夜夜添夜夜av| 在线播放国产一区中文字幕剧情欧美| 色诱女教师一区二区三区| 中文字幕亚洲无线码a| 浅井舞香一区二区| 91老司机在线| 欧美日韩在线视频一区| 91精品国产高清久久久久久久久| 日韩欧美国产视频| 欧美电影免费观看高清| 日日摸夜夜添一区| 日韩成人在线免费观看| 欧美日韩亚洲成人| 97在线视频免费看| 欧美黑人一区二区三区| 全球成人中文在线| 国产成人亚洲综合91精品| 欧美激情a在线| 久久夜精品香蕉| 久久综合电影一区| 欧美激情视频在线| 久久久久久久一| 成人性教育视频在线观看| 欧美日韩亚洲系列| 精品久久久久久中文字幕大豆网| 九九热这里只有在线精品视| 国产成人在线精品| 成人欧美一区二区三区在线湿哒哒| 国产成人亚洲综合| 亚洲欧美资源在线| 久久99热这里只有精品国产| 国产成人精品久久二区二区91| 大胆欧美人体视频| 91在线观看免费网站| 成人在线视频网站| 国产精品老女人精品视频| 另类图片亚洲另类| 国产精品一区二区三| 久久久精品久久| 成年无码av片在线| 91精品国产色综合久久不卡98| 国产精品一区二区久久精品| 欧美激情视频在线| 中文字幕免费国产精品| 欧美性xxxx极品hd满灌| 国产精品久久久久久久久久东京| 成人网在线视频| 久久久久久亚洲精品中文字幕| 97超级碰碰碰久久久| 91视频国产高清| 一道本无吗dⅴd在线播放一区| 日韩大陆欧美高清视频区| 久久成人精品一区二区三区| 日韩美女福利视频| 欧美疯狂xxxx大交乱88av| 亚洲国产精品资源| 久久在线精品视频| 国产精品欧美日韩久久| 中文字幕无线精品亚洲乱码一区| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品网址在线| 欧美乱大交xxxxx另类电影| 在线成人激情黄色| 国内精品在线一区| 欧美乱大交做爰xxxⅹ性3| 欧美在线观看网站| 亚洲在线免费视频| 色与欲影视天天看综合网| 国产精品视频一区国模私拍| 亚洲精品www久久久| 欧美性jizz18性欧美| 国产精品偷伦视频免费观看国产| 欧美在线视频在线播放完整版免费观看| 国产精品久久一| 久久国产精品免费视频| 国产91精品久久久久久| 久久99久久99精品免观看粉嫩| 亚洲在线观看视频网站| 国产在线观看一区二区三区| 91成人精品网站| 欧美日韩激情视频8区| 欧美色视频日本版| 日韩av男人的天堂| 精品成人乱色一区二区|