成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > golang中為什么不存在三元運算符詳解

golang中為什么不存在三元運算符詳解

熱門標(biāo)簽:長沙ai機器人電銷 澳門防封電銷卡 智能電銷機器人營銷 地圖標(biāo)注測試 福州鐵通自動外呼系統(tǒng) 賺地圖標(biāo)注的錢犯法嗎 廣東語音外呼系統(tǒng)供應(yīng)商 濮陽自動外呼系統(tǒng)代理 烏魯木齊人工電銷機器人系統(tǒng)

三元運算符廣泛存在于其他語言中,比如:

python:

val = trueValue if expr else falseValue

javascript:

const val = expr ? trueValue : falseValue

c、c++:

const char *val = expr ? "trueValue" : "falseValue";

然而,被廣泛支持的三目運算符在golang中卻是不存在的!如果我們寫出類似下面的代碼:

val := expr ? "trueValue" : "falseValue"

那么編譯器就該抱怨了:invalid character U+003F '?'。意思是golang中不存在?這個運算符,編譯器不認(rèn)識而且非字母數(shù)字下劃線也不能用做變量名,自然也就當(dāng)作是非法字符了。

然而這是為什么呢,其實官方給出了解釋,這里簡單引用一下:

The reason ?: is absent from Go is that the language's designers had seen the operation used too often to create impenetrably complex expressions. The if-else form, although longer, is unquestionably clearer. A language needs only one conditional control flow construct.

golang中不存在?:運算符的原因是因為語言設(shè)計者已經(jīng)預(yù)見到三元運算符經(jīng)常被用來構(gòu)建一些極其復(fù)雜的表達(dá)式。雖然使用if進行替代會讓代碼顯得更長,但這毫無疑問可讀性更強。一個語言只需要有一種條件判斷結(jié)構(gòu)就足夠了。

毫無疑問,這是在golang“大道至簡”的指導(dǎo)思想下的產(chǎn)物。

這段話其實沒問題,因為某些三元運算符的使用場景確實會降低代碼的可讀性:

const status = (type===1?(agagin===1?'再售':'已售'):'未售')

const word = (res.distance === 0) ? 'a'
  : (res.distance === 1  res.difference > 3) ? 'b'
  : (res.distance === 2  res.difference > 5  String(res.key).length > 5) ? 'c'
  : 'd';

乍一看確實很復(fù)雜,至少第二個表達(dá)式不花個20秒細(xì)看可能沒法理清控制流程(想象一下當(dāng)縮進錯位或是完全沒有縮進的時候)。

如果把它們直接轉(zhuǎn)化成if語句是這樣的:

let status = ''
if (type === 1) {
  if (again === 1) {
    status = '再售'
  } else {
    status = '已售'
  }
} else {
  status = '未售'
}

let word = ''
if (res.distance === 0) {
  word = 'a'
} else {
  if (res.distance === 1  res.difference > 3) {
    word = 'b'
  } else {
    if (res.distance === 2  res.difference > 5  String(res.key).length > 5) {
      word = 'c'
    } else {
      word = 'd'
    }
  }
}

看起來并沒有多少的改善,特別是例2,三層嵌套,不管是誰review到這段代碼難免不會抱怨你幾句。

然而事實上這些代碼是可以簡化的,考慮到三元運算符總是會給變量一個值,因此最后的else其實可以看作是變量的默認(rèn)值,于是代碼可以這么寫:

let status = '未售'
if (type === 1) {
  if (again === 1) {
    status = '再售'
  } else {
    status = '已售'
  }
}

let word = 'd'
if (res.distance === 0) {
  word = 'a'
} else {
  if (res.distance === 1  res.difference > 3) {
    word = 'b'
  } else {
    if (res.distance === 2  res.difference > 5  String(res.key).length > 5) {
      word = 'c'
    }
  }
}

其次,對于例2,顯然可以使用else if來清除嵌套結(jié)構(gòu):

let word = 'd'
if (res.distance === 0) {
  word = 'a'
} else if (res.distance === 1  res.difference > 3) {
  word = 'b'
} else if (res.distance === 2  res.difference > 5  String(res.key).length > 5) {
  word = 'c'
}

現(xiàn)在再來看,顯然使用if語句的版本的可讀性更高,邏輯也更清晰(通過去除嵌套)。

然而事實也不盡然。除了用三元運算符表達(dá)流程控制之外,事實上更常見更廣泛的一個應(yīng)用是如下這樣的表達(dá)式:

const val = expr ? trueValue : falseValue

const func = (age) => age > 18 ? '成年人' : '未成年人'

類似上述通過一個簡短的條件表達(dá)式來確定變量的值,在開發(fā)中的出現(xiàn)頻率是相當(dāng)高的。這時三元運算符的意圖更清晰,可讀性也較if語句更高,特別是配合匿名函數(shù)(lambda表達(dá)式)使用可以極大簡化我們的代碼。

對此python的解決之道是之支持上述的簡化版三元表達(dá)式,同時表達(dá)式不支持嵌套,達(dá)到了揚長避短的目的。不過代價是編譯器的相關(guān)實現(xiàn)會復(fù)雜化。

而對于golang來說一個簡單的能只通過單遍掃描即可完成ast構(gòu)建的編譯器是其保持急速的構(gòu)建速度的秘訣之一,為了這樣簡單的功能增加編譯器實現(xiàn)的復(fù)雜度是不可接受的。同時由于golang“大道至簡”的哲學(xué),能用現(xiàn)有語法結(jié)構(gòu)解決的問題,自然不會再添加新的語法。

不過還是有辦法的,雖然不推薦:

func If(cond bool, a, b interface{}) {
  if cond {
    return a
  }

  return b
}

age := 20
val := If(age > 18, "成年人", "未成年人").(string)

不推薦這么做是有幾個原因:

  1. 使用接口導(dǎo)致性能下降
  2. 需要強制的類型斷言
  3. 不管三元表達(dá)式還是if語句,對于不會到達(dá)的分支是不會計算的,也就是惰性計算;而給函數(shù)傳遞參數(shù)時每一個表達(dá)式都會被計算

最后總結(jié)一下:

三元運算符的優(yōu)點:

  • 對于簡短的表達(dá)式使用三元運算符表意更清晰,特別是在習(xí)慣了線性閱讀三元運算符表達(dá)式之后
  • 不需要中間狀態(tài)(例如第一個例子中的let變量可以替換為const,代碼更健壯),心智負(fù)擔(dān)更低
  • 沒有中間狀態(tài)也就意味著更少或完全沒有副作用,代碼更易跟蹤和維護

但三元運算符也有明顯的缺點:

  • 對于復(fù)雜邏輯代碼可讀性較差(例如第一個例子中的status,需要在trueValue的位置進行進一步的條件判斷時)
  • 容易被濫用,很多人將其用于替代if語句或是簡化復(fù)雜的if嵌套,這會導(dǎo)致上一條中所描述的結(jié)果
  • 條件分支只能為表達(dá)式,不支持多條語句

所以這是一個見仁見智的問題,總之只能入鄉(xiāng)隨俗了。

參考

https://juejin.im/post/6844903561759850510

https://www.it-swarm.dev/zh/javascript/替代js中的嵌套三元運算符/1055944752/

https://golang.org/doc/faq#Does_Go_have_a_ternary_form

總結(jié)

到此這篇關(guān)于golang中為什么不存在三元運算符的文章就介紹到這了,更多相關(guān)golang不存在三元運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Golang 運算符及位運算詳解
  • Go語言運算符案例講解
  • 手把手帶你走進Go語言之運算符解析

標(biāo)簽:西雙版納 調(diào)研邀請 德州 太原 阿克蘇 廣西 慶陽 貴陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang中為什么不存在三元運算符詳解》,本文關(guān)鍵詞  golang,中,為什么,不存在,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang中為什么不存在三元運算符詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang中為什么不存在三元運算符詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    最近中文字幕mv免费高清电影| 新片速递亚洲合集欧美合集| 国产盗摄女厕一区二区三区| 国内精品久久久久久影院8f| 久草在线最新视频| 电影一区二区三区| 亚洲日本va在线观看| 精品不卡一区二区三区| 热久久一区二区| 日韩精品中文字| 91免费视频大全| 久久久综合网| 欧美牲交a欧美牲交| 九九久久国产精品| 性xxxx奶大欧美高清| 97碰碰碰免费公开在线视频| 欧美高清视频一区| japanese日本护士撒尿| 久久国产视频一区| 嫩草影院2018| 在线观看欧美理论a影院| eeuss影院www在线观看| 成人激情免费网站| 欧美特黄一级片| 天天干天天干天天干| 成人深夜直播免费观看| 人妻久久久一区二区三区| 亚洲午夜精品久久久久久性色| 国产精品久久久久久av公交车| 亚洲天堂视频网站| 亚洲网友自拍| 国产精品超碰97尤物18| 亚洲jizzjizz日本少妇| 网友自拍一区| 国产97色在线|日韩| 自拍偷拍亚洲天堂| 视频在线观看免费影院欧美meiju| 亚洲加勒比久久88色综合| 亚洲高清视频在线播放| 精品少妇一区二区30p| 亚洲三级电影在线观看| 亚洲欧美激情另类| 国产精品美女久久久久久不卡| 国产欧美精品在线观看| 动漫精品一区二区| 秋霞在线观看一区二区三区| 潘金莲一级淫片aaaaaa播放| a级一a一级在线观看| 自拍偷拍欧美日韩| 亚洲天堂av高清| 波多野结衣爱爱视频| 先锋影音av321| www.久久草| 亚洲国产精品国自产拍av秋霞| 一区二区三区不卡在线| 国产99精品在线观看| 麻豆一区二区三区视频| 免费的色视频| 国产女精品视频网站免费| 国产精品蜜芽在线观看| 日日天天狠狠| 人人妻人人澡人人爽欧美一区| 欧美少妇xxxx| 日韩不卡av在线| 国产jjizz一区二区三区视频| 亚洲综合色成人| 国产视频一二三区| 免费高清不卡av| 毛片一区二区三区四区| 国产91九色蝌蚪| 精品一区二区三区在线观看国产| 色噜噜狠狠一区二区三区| 国产东北露脸精品视频| 一本久久综合| 日本精品一区二区在线观看| 91av在线影院| 亚洲中文字幕久久精品无码喷水| 91中文在线观看| www.777色| 久久人人爽人人爽人人av| 欧美69xxxxx| 韩国三级与黑人| 亚洲乱码在线观看| 国产精品一二三在线观看| 91久久久精品| 日韩激情在线观看| 日韩视频一二三| 夜夜嗨av禁果av粉嫩avhd| 成人免费在线观看av| 国产乱人伦精品一区二区| 激情成人午夜视频| 亚洲精品极品少妇16p| 欧美涩涩视频| 手机av在线免费观看| 在线日本视频| 白白色免费视频| 午夜免费福利在线| 欧美最猛性xxxxxhd| 国产精品久久一级| 大肉大捧一进一出好爽视频| 哥也色在线视频| 欧美一区二区三区的| 精品视频在线一区| 国产精品久久久午夜夜伦鲁鲁| 摸摸摸bbb毛毛毛片| av永久免费观看| 久久婷五月综合| 日本www视频在线观看| 亚洲精品v日韩精品| 中文字幕亚洲精品视频| 91国产精品| 在线播放av片| 欧美网站在线| 日韩免费视频播放| 欧美69xx性欧美| 性感美女福利视频| 4438国产精品一区二区| 亚洲一区国产精品| 肥婆老bbb肥婆bbbbb| 男人天堂2017| 日本精品久久久久久| 欧美办公室脚交xxxx| 老司机久久99久久精品播放免费| 最新日韩中文字幕| 1769在线观看| 一级黄色片国产| 亚洲欧美制服另类日韩| 欧美一级视频免费在线观看| 国产中文字幕一区二区三区| 国产私人影院| 中文字幕乱码一区二区三区| 农村少妇久久久久久久| 黄色免费在线看| 天天看片天天操| 又粗又大的机巴好爽欧美| ·天天天天操| 天天想你在线观看完整版电影免费| 99精品久久久久久中文字幕| 亚洲天堂久久久久| 国产精品成人久久久久| 国产亚洲毛片| 久久久高清视频| 久久久国产一级片| 久久综合色占| 亚洲人成在线电影| 日本欧美日韩| 亚洲国产成人va在线观看麻豆| 2014亚洲天堂| 亚洲欧洲色图| www.99r| 91色国产在线| 私人影视中文字幕| 免费成人黄色网| 国产欧美日韩不卡免费| 亚洲理伦在线| 国产在线精品二区| jiyouzz国产精品久久| 国产午夜手机精彩视频| 91精品国产综合久| 久久久亚洲一区| 亚洲免费资源| 人妻精品久久久久中文字幕| 天天干天天操天天爱| 亚洲国产日本| 强伦女教师2:伦理在线观看| 大尺度在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 日本精品视频一区| 国产一级电影网| 北条麻妃av毛片免费观看| 欧美视频你懂的| 国产精品初高中精品久久| 永久免费精品视频网站| 三级a三级三级三级a十八发禁止| 亚洲午夜精品久久久久久性色| 国产成人天天5g影院在线观看| 国产午夜三级一区二区三| 91久久精品www人人做人人爽| 国产成人精品视频在线| 中国黄色片一级| 精品国产123区| 在线精品国精品国产尤物884a| 亚洲欧美激情在线| 欧美成人精品h版在线观看| 亚洲a视频在线观看| 天天色天天爱天天射综合| 秋霞午夜鲁丝一区二区| 成人小视频在线看| 欧美丰满熟妇bbbbbb百度| 国产亚洲午夜高清国产拍精品| 亚洲精品一区二区二区| 91无套直看片红桃在线观看| 性xxxfllreexxx少妇| 影院在线观看全集免费观看| 波多野结衣久久| 色版视频在线观看| 在线播放麻豆| 亚洲性日韩精品一区二区| 色偷偷偷综合中文字幕;dd| 久久九九热免费视频| 亚洲va国产va欧美va观看| 天天干天天色天天| 无码人妻一区二区三区在线| 美女一区二区在线观看| 日本一区二区视频在线播放| 国产一区二区日韩精品欧美精品| 国产精品乱码久久久| 国产按摩一区二区三区| 日本色图欧美色图| 国产精品欧美风情| 日本免费一区二区三区视频| 亚洲一级Av无码毛片久久精品| 女人天堂av在线播放| 欧洲日韩成人av| 国产成人精品网站| 在线视频播放大全| 国产大片一区二区| 亚洲精品国产a久久久久久| 一本色道久久综合狠狠躁篇的优点| 欧美黑人ⅹxxx另类猛交| 日韩毛片在线一区二区毛片| 欧美日韩国产传媒| 欧美黄色免费观看| 91丨porny丨户外露出| 日韩一级毛片| 97免费高清电视剧观看| 在线看片网址| 伊人久久国产精品| 亚洲天堂日韩av| 三级毛片在线免费看| 亚洲欧美日韩专区| 久久久精品免费网站| 91精品麻豆| 精品日韩av| 亚洲区小说区图片区| sis001亚洲原创区| 一区二区国产日产| 蜜桃麻豆www久久国产精品| 夜夜嗨av一区二区三区免费区| 日韩精品免费在线播放| 亚洲一区二区三区乱码| 在线一级成人| 久久久久久久一区| 一区二区三区四区免费观看| 媚黑女一区二区| 日韩av黄色在线| 一色屋免费视频| 日韩经典第一页| 国产一二三av| 在线观看免费毛片| 国产区在线观看| 中文字幕日韩欧美精品在线观看| 亚洲图片欧洲图片日韩av| 亚洲一区二区三区无码久久| 成人精品第一区二区三区| 国产7777777| 99麻豆久久久国产精品免费优播| 国产精品久久久久久久久粉嫩av| 自拍偷拍欧美一区| 欧美激情在线有限公司| 日韩欧美一区中文| 99久久99九九99九九九| 国产精品1000部啪视频| 日韩一区三区| 欧美性69xxxx肥| 欧美天堂影院| 色帝国亚洲欧美在线| 色88888久久久久久影院野外| 久久99久久久久久久噜噜| 亚洲AV无码国产精品| 亚洲无线一线二线三线区别av| 另类尿喷潮videofree| 久久精品人人做| 日韩成人久久久| 91成人免费在线视频| 亚洲国产精品人人做人人爽| 欧美粗大gay| 曰本一区二区三区视频| 成在在线免费视频| 91视频在线免费观看| 在线观看91精品国产入口| 欧美人善zozσ性伦交| 久久免费视频99| 中文字幕免费精品一区| 欧美视频不卡| 老司机成人影院| 福利精品视频在线| 欧美一区二区精美| 亚洲精品一区国产| 欧美不卡在线观看| 欧美国产一区二区三区| 九色porny丨精品自拍视频| 99视频精品全部免费在线| 女人黄色一级片| 欧美日本不卡高清| 浮妇高潮喷白浆视频| 草视频在线观看| 久久久久久久久网站| 北岛玲日韩精品一区二区三区| 日韩一区二区三区色| 舔着乳尖日韩一区| 日韩av一级大片| 91麻豆国产福利在线观看宅福利| 欧美日韩中文字幕在线视频| 国产精选在线视频拍拍拍| 日韩欧美三区| 欧美 日韩 国产一区| 人妻久久一区二区| 亚洲精品菠萝久久久久久久| 国产精品久久久久久久久免费| 国产无遮挡一区二区三区毛片日本| 91精品国产色综合久久不卡电影| 成人午夜av在线| 一区二区亚洲| 伊人久久大香线蕉综合网站| 精品一区二区三区四区在线| 国产一二三区在线| 中文字幕一区二区三区手机版| 亚洲区小说区图片区qvod按摩| 欧美久久久久久| 欧美13~18sex性hd| 四虎影视免费看电影| 国产精品国三级国产av| 日韩高清av电影| 美女高潮黄又色高清视频免费| 国产精品一色哟哟哟| av超碰免费在线| 欧美jizz18性欧美|