1. 程式人生 > >go語言學習十二 - 布爾表達式采用短路邏輯

go語言學習十二 - 布爾表達式采用短路邏輯

fun Go語言 fmt 表達式 學習 highlight port 邏輯 布爾表達式

package main

import "fmt"

func main() {

	//運行結果:a
	if true || b() { //go 的 if 判斷采用短路求值,值已經確定後續的表達式不會計算也不會被調用
		fmt.Println("a")
	}

	//運行結果:ba
	if or(true, b()) { //函數的參數必須被即時求值的
		fmt.Println("a")
	}

	//運行結果:a
	if orfunc(true, b) { //傳入函數參數的函數實現惰性求值
		fmt.Print("a")
	}
}

func b() bool {
	fmt.Print("b")
	return false
}

func or(a, b bool) bool {
	return a || b
}

func orfunc(a bool, b func() bool) bool {
	return a || b()
}

go語言學習十二 - 布爾表達式采用短路邏輯