婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go語言中你所不知道的位操作用法

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

熱門標簽:浙江高頻外呼系統多少錢一個月 黃岡人工智能電銷機器人哪個好 惠州電銷防封電話卡 汕頭小型外呼系統 阿里云ai電話機器人 鄭州亮點科技用的什么外呼系統 濱州自動電銷機器人排名 釘釘有地圖標注功能嗎 建造者2地圖標注

前言

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

位操作符

與操作:

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 main

import (
 "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 main

import (
  "fmt"
)

type users struct {
  name string
  flag uint8
}

// 這里通過位移的方式默認00000 從左邊一次為vip,svip,blue,red,yellow
const (
  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 main

import "fmt"

func main() {
  x := 2
  y := 4
  fmt.Println(x1)
  fmt.Println(y>>1)
}output:4 2

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

總結

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

您可能感興趣的文章:
  • golang簡單位運算示例

標簽:阿壩 泰安 瀘州 滄州 駐馬店 晉中 東營 昭通

巨人網絡通訊聲明:本文標題《Go語言中你所不知道的位操作用法》,本文關鍵詞  語,言中,你所,不知道,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言中你所不知道的位操作用法》相關的同類信息!
  • 本頁收集關于Go語言中你所不知道的位操作用法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91精品国产综合久久久久久久 | 一本色道久久综合狠狠躁的推荐| 日韩精品中文字幕一区二区三区| 久久精品视频一区二区| 日韩免费观看高清完整版| 日韩av网站免费在线| 奇米四色…亚洲| 色综合久久综合| 欧美日韩精品三区| 欧美在线你懂的| 精品亚洲国内自在自线福利| 日韩一区二区影院| 丁香一区二区三区| 亚洲成人av电影在线| 极品少妇一区二区| 综合久久久久久久| 亚洲精品视频在线观看免费| 欧美日韩一区小说| 中文字幕亚洲区| 一本色道久久综合亚洲精品按摩| 成人免费看的视频| 国产大陆精品国产| 国产精品视频看| 亚洲一区免费在线观看| 亚洲高清在线视频| 久久精品亚洲精品国产欧美kt∨| 日本欧美在线观看| 久久精品亚洲国产奇米99| 欧美无人高清视频在线观看| 精品日韩99亚洲| 国产精品全国免费观看高清| 国产精品午夜在线| 午夜精品一区二区三区电影天堂 | 91原创在线视频| 在线欧美小视频| 国产精品久久久久影视| 在线成人免费观看| 国产精品 日产精品 欧美精品| 国产黄色精品网站| 激情深爱一区二区| 亚洲国产wwwccc36天堂| 337p亚洲精品色噜噜噜| 国产日产欧美精品一区二区三区| 日韩一区二区在线观看视频播放| 久久国产免费看| 欧美日韩一区小说| 中文字幕一区二区三区在线播放| 不卡的电影网站| 精品中文av资源站在线观看| 国产亚洲女人久久久久毛片| 奇米影视一区二区三区| 国产精品久久精品日日| 日韩你懂的电影在线观看| 亚洲精品欧美综合四区| 亚洲成人手机在线| 播五月开心婷婷综合| 欧美高清视频www夜色资源网| 高清shemale亚洲人妖| 国产精品美女视频| 99久久精品99国产精品| 久久综合久久久久88| 三级成人在线视频| 中文字幕一区二区三区蜜月| 久久综合999| 成人动漫一区二区三区| 久久精品亚洲国产奇米99| 捆绑调教一区二区三区| 久久精品国产77777蜜臀| 亚洲制服丝袜av| 91精品福利在线| 国产伦精一区二区三区| 日本网站在线观看一区二区三区| 国产成人三级在线观看| 色婷婷av一区二区三区之一色屋| 欧美videos中文字幕| 制服丝袜亚洲精品中文字幕| 精品久久久久久久人人人人传媒| 亚洲一级片在线观看| 国产自产高清不卡| 一区二区三区四区在线| 国产大陆精品国产| 亚洲妇女屁股眼交7| 精品乱码亚洲一区二区不卡| 国产99久久久精品| 国产成人免费网站| 国产日韩欧美一区二区三区综合 | 中文字幕乱码亚洲精品一区| 国产在线不卡一卡二卡三卡四卡| 欧美日韩成人综合| 国产精品综合在线视频| 1区2区3区国产精品| 欧美一区二区三区视频免费播放| 午夜久久久久久久久| av一区二区久久| 91国产视频在线观看| 国产欧美精品国产国产专区| 91麻豆精品国产91久久久使用方法| 三级不卡在线观看| 亚洲午夜私人影院| 色老综合老女人久久久| 国产精品拍天天在线| 麻豆精品视频在线观看视频| 亚洲精品一二三区| 欧美午夜电影网| www.av精品| 自拍偷拍欧美激情| 亚洲一二三专区| 午夜免费欧美电影| 色综合天天在线| 国产欧美日韩久久| 欧美久久久久久蜜桃| 国产欧美日韩不卡| 国产女人aaa级久久久级| 中文字幕一区三区| 91麻豆免费看| 国产精品羞羞答答xxdd| 国产精品大尺度| 亚洲精品国产一区二区精华液 | 国产成人免费xxxxxxxx| 另类专区欧美蜜桃臀第一页| 亚洲午夜一区二区| 国产精品一区在线| 亚洲h精品动漫在线观看| 国产精品综合视频| 久久99精品国产麻豆婷婷洗澡| 日韩国产精品久久久| 国产91清纯白嫩初高中在线观看| 国产精品一二三四区| 另类综合日韩欧美亚洲| 午夜精品在线看| 国产酒店精品激情| 欧美精品99久久久**| 337p亚洲精品色噜噜噜| 久久这里只有精品首页| 日韩理论片网站| 免费精品视频在线| 亚洲欧美国产三级| 久久久久99精品国产片| 97aⅴ精品视频一二三区| 欧美日韩电影在线播放| 国产精品66部| 色哟哟国产精品| 亚洲精品福利视频网站| 一区二区三区视频在线看| 成人中文字幕电影| 91黄色小视频| 国产99一区视频免费| 欧美美女一区二区在线观看| 麻豆成人久久精品二区三区红| 国产高清不卡二三区| 国产精品婷婷午夜在线观看| 欧美一级高清片| 91视视频在线观看入口直接观看www | 成人综合日日夜夜| 欧美日韩视频在线观看一区二区三区| 99久久免费精品| 欧美影视一区在线| 精品99999| 亚洲精品国产一区二区精华液| 国产日产欧产精品推荐色| 美女脱光内衣内裤视频久久影院| 色先锋久久av资源部| 久久久精品国产免费观看同学| 精品无人区卡一卡二卡三乱码免费卡| 日本欧洲一区二区| 色综合中文字幕国产| 欧美三级三级三级爽爽爽| 国产精品视频你懂的| 亚洲成av人片在www色猫咪| 久久蜜桃一区二区| 欧美xxxxxxxxx| 日本欧美肥老太交大片| 色屁屁一区二区| 欧美激情一二三区| 亚洲成a人片在线不卡一二三区| 婷婷国产v国产偷v亚洲高清| 精久久久久久久久久久| 久久毛片高清国产| 老司机免费视频一区二区三区| 久久久久久久久久久久久夜| 日韩美女啊v在线免费观看| 国产原创一区二区| 欧美日韩精品一区二区| 亚洲男人天堂av网| 日本一区免费视频| 日韩欧美高清dvd碟片| 欧美精品一区二| 国产精品传媒入口麻豆| 欧美一三区三区四区免费在线看 | 日韩三级中文字幕| 久久精品人人做| 中文字幕视频一区二区三区久| 欧美日韩一区不卡| 久久精品一区二区三区不卡牛牛| 91黄色免费看| 欧美日韩中文字幕一区| 椎名由奈av一区二区三区| 国产欧美视频在线观看| 1024成人网| 国产精品国产三级国产普通话99|