婷婷综合国产,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
    国产91精品在线观看| 成人午夜av在线| 欧美日韩一区二区三区视频| 视频一区二区三区在线| 中文子幕无线码一区tr| 成人av在线播放网站| 亚洲一区欧美一区| 亚洲欧美国产77777| 日韩无一区二区| 91精品蜜臀在线一区尤物| 色综合一个色综合| 懂色一区二区三区免费观看| 亚洲在线成人精品| 午夜精品久久久久久久蜜桃app| 久久久久久免费| 一区二区中文视频| 亚洲人成网站色在线观看| 亚洲精品成人a在线观看| 自拍偷拍欧美激情| 国产精品久久久久桃色tv| 国产精品久久福利| 亚洲理论在线观看| 捆绑调教美女网站视频一区| 国产福利91精品一区二区三区| 国产成人精品免费网站| 日本高清无吗v一区| 欧美色倩网站大全免费| 欧美精选午夜久久久乱码6080| 精品福利av导航| 日韩美女视频一区二区| 久久国产日韩欧美精品| 99re视频精品| 91传媒视频在线播放| 在线视频国产一区| 欧美群妇大交群中文字幕| 在线91免费看| 中文字幕 久热精品 视频在线| 中文字幕一区二区在线观看| 国内不卡的二区三区中文字幕| 在线一区二区视频| 久久久久久久久99精品| 天涯成人国产亚洲精品一区av| 自拍偷拍欧美激情| 国产成人啪午夜精品网站男同| 91久久香蕉国产日韩欧美9色| 国产欧美一区二区三区网站| 秋霞电影网一区二区| 亚洲午夜电影网| 91黄色在线观看| 国产精品污污网站在线观看| 裸体一区二区三区| 3atv在线一区二区三区| 麻豆成人av在线| 久久久综合视频| 国内成+人亚洲+欧美+综合在线| 欧美色精品在线视频| 亚洲一区电影777| 成a人片亚洲日本久久| 日韩美女一区二区三区四区| 亚洲不卡在线观看| 欧美日韩五月天| 精品一区中文字幕| 国产免费成人在线视频| 欧美影院午夜播放| 麻豆精品一区二区| 久久一区二区三区国产精品| 国产高清在线观看免费不卡| 欧美激情一二三区| 欧美三级日韩三级| 久草中文综合在线| 亚洲色欲色欲www在线观看| 欧美日韩美女一区二区| 国产一区二区在线免费观看| 亚洲欧美一区二区三区极速播放| 精品久久久久香蕉网| 欧美性视频一区二区三区| 亚洲精品国产视频| 国产婷婷一区二区| 在线成人小视频| 精品视频在线免费| 精品视频一区 二区 三区| 99久久伊人网影院| 国内一区二区在线| 国产精品中文字幕日韩精品 | 成人欧美一区二区三区在线播放| 91蝌蚪porny成人天涯| 午夜精品久久久久| 91啪在线观看| 日韩精彩视频在线观看| 精品日韩av一区二区| 97精品久久久久中文字幕 | 久久只精品国产| 亚洲麻豆国产自偷在线| 成人h动漫精品| 国产丝袜在线精品| 日韩国产精品91| 色哟哟欧美精品| 免费精品99久久国产综合精品| 欧美日韩激情一区二区三区| 亚洲成人动漫在线观看| 成人不卡免费av| 中文字幕一区二区在线观看| 蜜臀a∨国产成人精品| 欧美成人三级在线| 欧美精品1区2区| av综合在线播放| 日韩不卡手机在线v区| 精品国产乱码久久久久久久| 国产美女av一区二区三区| 一区二区日韩av| 久久精子c满五个校花| 欧美综合视频在线观看| 91视频.com| 国产精品系列在线播放| 国产一区二区三区不卡在线观看 | 91精品综合久久久久久| 一本到不卡精品视频在线观看| 成人久久18免费网站麻豆 | 99re热视频精品| 白白色亚洲国产精品| 成人av电影免费在线播放| 国产乱人伦精品一区二区在线观看| 精品一区二区三区的国产在线播放| 欧美一区二区三区免费视频| 欧美精品久久久久久久久老牛影院| 成人午夜在线免费| eeuss鲁一区二区三区| 在线日韩av片| 国产亚洲欧美日韩在线一区| 欧美日韩国产综合视频在线观看 | 中文字幕亚洲欧美在线不卡| 欧美怡红院视频| 午夜视频久久久久久| 中文字幕中文字幕中文字幕亚洲无线| 日韩精品一卡二卡三卡四卡无卡| 不卡视频在线观看| 91麻豆精品国产91久久久使用方法| 欧美裸体bbwbbwbbw| 国产欧美日韩激情| 久久精品国产精品青草| 91激情五月电影| 亚洲色图色小说| 欧美日韩1234| 一区二区不卡在线播放| 国产老肥熟一区二区三区| 日韩一区二区免费高清| 亚洲精品高清视频在线观看| 大桥未久av一区二区三区中文| 精品日韩一区二区三区免费视频| 婷婷综合另类小说色区| 欧美美女一区二区三区| 日本va欧美va精品发布| 日韩一卡二卡三卡四卡| 蜜桃一区二区三区在线观看| 欧美一区二区三区四区高清| 蜜臀久久99精品久久久画质超高清 | 中文字幕亚洲精品在线观看| 老色鬼精品视频在线观看播放| 日韩手机在线导航| 国产一区三区三区| 国产欧美精品区一区二区三区| 精品在线你懂的| 久久精品一区二区三区不卡牛牛| 国产黄人亚洲片| 亚洲一区国产视频| 国产亚洲女人久久久久毛片| 91在线国产观看| 国产精品护士白丝一区av| 欧美日韩国产三级| 国产一区久久久| 日本一道高清亚洲日美韩| 国产精品日韩成人| 日韩欧美成人一区二区| 国产精品18久久久久| 亚洲欧美综合色| 久久青草国产手机看片福利盒子| 本田岬高潮一区二区三区| 日韩—二三区免费观看av| 国产精品福利影院| 91精品国产福利在线观看| 色又黄又爽网站www久久| 国产精品99久| 国产精品一区二区在线看| 日本aⅴ免费视频一区二区三区| 91在线视频官网| aaa国产一区| 国产成人精品在线看| 激情偷乱视频一区二区三区| 精品一区二区日韩| 激情综合色综合久久| 国产一区二区电影| 国产精品综合在线视频| 亚洲色图视频网站| 亚洲一区二区在线播放相泽| 亚洲一区电影777| 亚洲chinese男男1069| 五月综合激情日本mⅴ| 美女一区二区在线观看| 国产在线精品一区二区三区不卡| 蜜臂av日日欢夜夜爽一区|