利用hit在Golang中使用三元運算

2021-09-11 11:01:19 字數 2457 閱讀 3585

golang的設計理念是乙個事物只有一種解法, 所以連三元運算也沒有提供, 官方的思路是使用 if / else 代替三元運算

如果你平時習慣使用概括性更強的語句進行編寫**, 你可能希望可以這樣去編寫**:

var a = 20 > 50 ? true: false;  // a = false

var b = a || 100

// b = 100

var c = b && 50

// c = 50

var fn = c > 40 && func() // fn = "ok"

複製**

使用hit之後,以上的**我們可以這樣寫:

var a = if(20 > 50, true, false)  // a = false

var b = or(a, 100) // b = 100

var c = if(b, 50) // c = 50

var fn = if(c > 40, func

()) // fn = "ok"

複製**

拋棄教條,享受hit

複製**hit只有兩個api

func

if(args ...inte***ce{})

inte***ce

{}func

or(args ...inte***ce{})

inte***ce

{}複製**

當需返回取某個引數時, 並且該引數型別是函式時, hit會執行函式並且使用函式返回值作為引數的值

以下條件都會識別為不成立

ifa==成立, returnb, else returnc

//如果引數的型別是 `func()`, hit 讀取引數時會執行它並且返回nil

value9 := if(20 > 5, func

() , func

() ) // run: log.println("ok"), value = nil

// 如果引數的型別是 `func()inte***ce{}`, hit 讀取引數時會執行它並且返回函式的返回值.

value10 := if(func

()inte***ce

{} , func

()inte***ce

{} , func

()inte***ce

{} )

log.println(value9) // ok

}複製**ifa==成立, returnb, else returnnil

}複製**ifa==成立, returna, else returnb

}複製**

hit**的測試覆蓋率為 100%, 檢視具體的測試**: hit_test.go

Golang 在Golang中使用json

由於要開發乙個小型的web應用,而web應用大部分都會使用json作為資料傳輸的格式,所以有了這篇文章。包引用import 用於存放資料的結構體type mydata struct這裡需要注意的就是後面單引號中的內容。json item 這個的作用,就是name欄位在從結構體例項編碼到json資料格...

在 golang 中使用 Json

序列化物件將使用 encoding json 中的 marshal 函式。函式原型為 func marshal v inte ce byte,error 以下是官網給出的例子 package main import encoding json fmt os func main group color...

在Golang中使用Protobuf

本教程使用proto3版本的protocol buffer語言,提供了乙個基本的在go程式中使用protocol buffer的介紹。通過建立乙個簡單的示例應用程式,向你展示如何 它不是乙個全面的在go中使用protocol buffer的指南,更詳細的參考資訊請檢視前面的兩個教程。protobuf...