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

主頁 > 知識庫 > 詳解Go 語言中的比較操作符

詳解Go 語言中的比較操作符

熱門標簽:地圖標注的汽車標 中國地圖標注省會高清 西部云谷一期地圖標注 高德地圖標注口訣 學海導航地圖標注 南通如皋申請開通400電話 江西轉化率高的羿智云外呼系統 廣州呼叫中心外呼系統 浙江高速公路地圖標注

這篇文章專注于 6 個操作符,==,!=,,=,> 和 >=。我們將深入探討它們的語法和用法的細微差別。對很多人來說,這聽起來不像是吸引人的事,或者他們可能已經從其他編程語言獲得了糟糕的經驗。然而,在 Go 中它們定義的很好并簡潔。下面討論的主題,如可比性將出現在其他場合,如 maps。為了使用上述操作符,至少有一個操作數需要可賦值給第二個操作數:

package main
import "fmt"
type T struct {
  name string
}
func main() {
  s := struct{ name string }{"foo"}
  t := T{"foo"}
  fmt.Println(s == t) // true
}

這條規則顯著縮小了可選范圍:

var a int = 1
var b rune = '1'
fmt.Println(a == b)

類似的代碼在 Javascript 或 Python 中可以運行。但在 Go 中它是非法的,并且在編譯時會被檢測到。

src/github.com/mlowicki/lab/lab.go:8: invalid operation: a == b (mismatched types int and rune)

可賦值不是唯一要求。這是相等和順序操作符的規則……

相等操作符

操作數需要使用 == 或 != 操作符進行比較。哪些方法,哪些值可以被比較?Go 規范定義的非常明確:

boolean 值可比較(如果倆個值都是真或假,那么比較結果被認為 true)
整數和浮點數比較:

var a int = 1
var b int = 2
var c float32 = 3.3
var d float32 = 4.4
fmt.Println(a == b) // false
fmt.Println(c == d) // false

當編譯時 a == d 會拋出異常( int 和 float32 類型不匹配)因為它不可能用 int 和 float 比較。

復數相等,如果他們的是實數和虛數部分都相等:

var a complex64 = 1 + 1i
var b complex64 = 1 + 2i
var c complex64 = 1 + 2i
fmt.Println(a == b) // false
fmt.Println(b == c) // true

字符串類型值可比較

指針類型值相等,如果他們都是 nil 或都指向相同的變量:

type T struct {
  name string
}
func main() {
  t1 := T{"foo"}
  t2 := T{"bar"}
  p1 := t1
  p2 := t1
  p3 := t2
  fmt.Println(p1 == p2)  // true
  fmt.Println(p2 == p3)  // false
  fmt.Println(p3 == nil) // false
}

不同的 zero-size 變量可能具有相同的內存地址,因此我們不假設任何指向這些變量的指針相等。

a1 := [0]int{}
a2 := [0]int{}
p1 := a1
p2 := a2
fmt.Println(p1 == p2) // might be true or false. Don't rely on it!

通道類型值相等,如果他們確實一樣(被相同的內置 make 方法創建)或值都是 nil:

ch1 := make(chan int)
ch2 := make(chan int)
fmt.Println(ch1 == ch2) // false

接口類型是可比較。與通道和指針類型值比較一樣,如果是 nil 或 動態類型和動態值是相同的:

type I interface {
  m()
}
type J interface {
  m()
}
type T struct {
  name string
}
func (T) m() {}
type U struct {
  name string
}
func (U) m() {}
func main() {
  var i1, i2, i3, i4 I
  var j1 J
  i1 = T{"foo"}
  i2 = T{"foo"}
  i3 = T{"bar"}
  i4 = U{"foo"}
  fmt.Println(i1 == i2) // true
  fmt.Println(i1 == i3) // false
  fmt.Println(i1 == i4) // false
  fmt.Println(i1 == j1) // false
}

比較接口類型的方法集不能相交。

接口類型 I 的 i 和 非接口類型 T 的 t 可比較,如果 T 實現了 I 則 T 類型的值是可比較的。如果 I 的 動態類型和 T 是相同的,并且 i 的動態值和 t 也是相同的,那么值是相等的:

type I interface {
  m()
}
type T struct{}
func (T) m() {}
type S struct{}
func (S) m() {}
func main() {
  t := T{}
  s := S{}
  var i I
  i = T{}
  fmt.Println(t == i) // true
  fmt.Println(s == i) // false
}
結構類型可比較,所以字段都需要比較。所有非空白字段相等則他們等。
a := struct {
  name string
  _ int32
}{name: "foo"}
b := struct {
  name string
  _ int32
}{name: "foo"}
fmt.Println(a == b) // true

Go 中 數組是同質的 —— 只有同一類型(數組元素類型)的值可以被存儲其中。對于數組值比較,它們的元素類型需要可比較。如果對應的元素相同,數組就相等。

就是這樣。上面列表很長但并不充滿驚奇。嘗試了解它在 JavaScript 是如何工作的……

有三種類型不能比較 —— maps, slices 和 functions。Go 編譯器不允許這樣做,并且編譯比較 maps 的程序會引起一個錯誤 map can only be compared to nil. 。展示的錯誤告訴我們至少可以用 maps,slices 或 functions 和 nil 比較。

目前為止,我們知道接口值是可比較的,但 maps 是不可以的。如果接口值的動態類型是相同的,但是不能比較(如 maps),它會引起一個運行時錯誤:

type T struct {
  meta map[string]string
}
func (T) m() {}
func main() {
  var i1 I = T{}
  var i2 I = T{}
  fmt.Println(i1 == i2)
}
panic: runtime error: comparing uncomparable type main.T
goroutine 1 [running]:
panic(0x8f060, 0x4201a2030)
  /usr/local/go/src/runtime/panic.go:500 +0x1a1
main.main()
  ...

順序操作符

這些操作符只能應用在三種類型:整數,浮點數和字符串類型。這沒有什么特別的或 Go 特有的。值得注意的是字符串是按字典順序排列的。byte-wise 一次一個字節并沒有 Collation 算法。

fmt.Println("aaa"  "b") // true
fmt.Println("ł" > "z")  // true

結果

任何比較操作符的結果都是無類型布爾常量(true 或 false)。因為它沒有類型,所以可以分配了給任何布爾變量:

var t T = true
t = 3.3  5
fmt.Println(t)

這段代碼輸出 true。另一個,嘗試分配 bool 類型的值:

var t T = true
var b bool = true
t = b
fmt.Println(t)

產生一個錯誤,不能使用 b (bool類型)分配給 T 類型。

總結

以上所述是小編給大家介紹的Go 語言中的比較操作符,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • MongoDB 管道的介紹及操作符實例
  • 基于MongoDB數據庫的數據類型和$type操作符詳解

標簽:保定 德宏 常州 曲靖 許昌 吐魯番 貴州 東營

巨人網絡通訊聲明:本文標題《詳解Go 語言中的比較操作符》,本文關鍵詞  詳解,語言,中的,比較,操作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Go 語言中的比較操作符》相關的同類信息!
  • 本頁收集關于詳解Go 語言中的比較操作符的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    免费成人av在线| 99久久99久久精品国产片果冻| 亚洲国产精品视频| 亚洲激情图片小说视频| 亚洲日本在线观看| 亚洲蜜桃精久久久久久久| 伊人夜夜躁av伊人久久| 一区二区成人在线视频| 亚洲精品自拍动漫在线| 一区二区三区日韩在线观看| 一区二区日韩av| 亚洲成人午夜影院| 轻轻草成人在线| 久久精品国产成人一区二区三区 | 全国精品久久少妇| 日日骚欧美日韩| 免费成人美女在线观看.| 九九在线精品视频| 国产精品66部| 91九色02白丝porn| 欧美日韩第一区日日骚| 欧美不卡在线视频| 中文字幕欧美区| 亚洲一区二区三区免费视频| 免费成人小视频| 成人自拍视频在线| 欧美性生活大片视频| 在线综合视频播放| 国产亚洲污的网站| 亚洲影视在线观看| 蜜臀av性久久久久av蜜臀妖精| 国产一区二区不卡在线| 91麻豆国产福利精品| 欧美二区三区的天堂| 久久久99精品久久| 亚洲乱码国产乱码精品精的特点 | 一级精品视频在线观看宜春院| 亚洲电影激情视频网站| 精品中文字幕一区二区| 成人h动漫精品一区二| 欧美日韩电影一区| 国产欧美日韩不卡| 天天免费综合色| 成人免费视频播放| 欧美日韩精品电影| 欧美高清在线精品一区| 午夜国产精品一区| 成人午夜电影网站| 欧美一区二区三区人| 国产精品传媒在线| 日本91福利区| 95精品视频在线| 精品成人一区二区三区四区| 亚洲美女电影在线| 国产一区二区主播在线| 欧美亚洲高清一区| 中文字幕一区二区三区在线播放| 日本成人中文字幕| 91丨porny丨在线| 久久婷婷一区二区三区| 亚洲国产精品久久久男人的天堂 | 中文字幕欧美国产| 日韩影院免费视频| 色婷婷久久久亚洲一区二区三区| 欧美成人女星排名| 亚洲精品乱码久久久久久久久| 久久99九九99精品| 这里只有精品免费| 亚洲成人动漫在线观看| 99精品欧美一区二区三区小说| 精品美女一区二区三区| 亚洲18色成人| 在线一区二区三区做爰视频网站| 国产亚洲成aⅴ人片在线观看| 日韩电影在线观看电影| 在线观看一区日韩| 亚洲欧美中日韩| 国产精品夜夜嗨| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91在线无精精品入口| 久久久国产精品麻豆| 免费精品视频最新在线| 欧美疯狂性受xxxxx喷水图片| 伊人开心综合网| 91色在线porny| 最新日韩av在线| 99视频一区二区| 自拍偷拍欧美激情| 波多野结衣在线一区| 欧美激情一区二区三区不卡| 国产盗摄一区二区| 国产清纯在线一区二区www| 国产一区二区免费看| 精品国产亚洲一区二区三区在线观看| 日本伊人午夜精品| 7777精品伊人久久久大香线蕉经典版下载| 亚洲宅男天堂在线观看无病毒| 97精品超碰一区二区三区| 自拍偷自拍亚洲精品播放| 99久久精品免费| 亚洲精品成人在线| 欧美亚洲自拍偷拍| 午夜精品影院在线观看| 欧美男生操女生| 免费欧美高清视频| 精品久久久久久久久久久久久久久| 美脚の诱脚舐め脚责91 | 国产精品区一区二区三| 成人性生交大片免费| 自拍偷拍欧美激情| 欧美视频在线一区二区三区 | 欧美性大战xxxxx久久久| 亚洲综合在线免费观看| 精品视频在线免费| 麻豆久久一区二区| 久久蜜臀中文字幕| 99精品视频在线观看| 一区二区三区在线不卡| 欧美卡1卡2卡| 国产一区二区三区精品欧美日韩一区二区三区 | 久久精品免费在线观看| 粉嫩绯色av一区二区在线观看| 中文字幕av不卡| 欧美在线免费观看视频| 首页欧美精品中文字幕| 精品成人免费观看| av激情成人网| 日韩中文字幕亚洲一区二区va在线 | 5月丁香婷婷综合| 国产精品小仙女| 亚洲美女淫视频| 日韩精品一区在线| 国产91精品免费| 亚洲国产中文字幕| 久久综合久久综合九色| 色综合久久99| 蜜桃久久久久久| 亚洲欧洲韩国日本视频| 欧美丰满少妇xxxxx高潮对白| 国产精品一线二线三线精华| 亚洲欧美日韩国产中文在线| 欧美一级日韩不卡播放免费| 国产乱人伦偷精品视频不卡| 一级做a爱片久久| 国产亚洲欧洲997久久综合| 欧美午夜不卡在线观看免费| 久久99国产乱子伦精品免费| 中文字幕佐山爱一区二区免费| 91精品一区二区三区在线观看| 高清不卡一二三区| 日韩**一区毛片| 中文字幕一区二区三| 欧美成人艳星乳罩| 91福利资源站| 成人黄色在线看| 精品在线一区二区| 亚洲超碰97人人做人人爱| 欧美国产精品一区二区三区| 69堂成人精品免费视频| 91视频91自| 国产一区二区三区四区在线观看 | 91视视频在线观看入口直接观看www | 久久夜色精品国产噜噜av| 在线这里只有精品| 成人av网在线| 国模大尺度一区二区三区| 亚洲一区视频在线| 日韩一区在线免费观看| 久久在线观看免费| 欧美福利一区二区| 欧美性色综合网| 91蜜桃视频在线| 成人精品一区二区三区四区| 欧美a级一区二区| 婷婷开心激情综合| 亚洲国产综合91精品麻豆| 日韩一区有码在线| 国产精品美女久久久久久久久久久 | 91精品国产综合久久久蜜臀粉嫩| 91丨九色丨蝌蚪丨老版| 国产成人在线免费观看| 极品瑜伽女神91| 男男视频亚洲欧美| 丝袜诱惑制服诱惑色一区在线观看| 亚洲日本在线视频观看| 中文字幕在线视频一区| 国产欧美精品一区| 国产欧美精品一区二区色综合| 久久婷婷色综合| 久久午夜老司机| 久久免费午夜影院| xfplay精品久久| 精品1区2区在线观看| 日韩欧美成人激情| 欧美大胆人体bbbb| 日韩欧美视频一区| 精品剧情在线观看| 精品福利av导航| 久久久亚洲午夜电影| 国产清纯白嫩初高生在线观看91|