if 語句
- if 的條件裡可以賦值
- if 的條件裡賦值的變數作用域就在這個 if 語句裡
使用 if 語句開啟 txt 檔案
package main import ( "fmt" "io/ioutil" ) func main() { const filename = "test.txt" //返回兩個值([]byte, error)檔案內容和出錯形式 contents, err := ioutil.ReadFile(filename) if err != nil { fmt.Println(err) } else { fmt.Printf("%s\n", contents) } }
執行結果:
若無此檔案會輸出:
open test1.txt: The system cannot find the file specified.
if 可以像 for 一樣寫
package main import ( "fmt" "os" ) func main() { const filename = "test.txt" //返回兩個值([]byte, error)檔案內容和出錯形式 if contents, err := os.ReadFile(filename); err != nil { fmt.Println(err) } else { fmt.Println(string(contents)) } }
ioutil.ReadFile
中的ReadFile
函式被畫上了刪除線(通常是灰色或斜體),這通常意味著該函式或包在較新版本的 Go 語言中已經被標記為廢棄(deprecated)或者已經有更推薦的替代方式。對於
ioutil.ReadFile
來說,確實,從 Go 1.16 版本開始,io/ioutil
包中的許多函式,包括ReadFile
,都被認為是過時的,並推薦使用os
和io
包中的函式作為替代。具體來說,ioutil.ReadFile
的功能現在可以透過os.ReadFile
直接實現,後者提供了相同的功能但屬於更現代的 API。使用
os.ReadFile
而不是ioutil.ReadFile
的好處包括:
一致性:
os
包是處理檔案和目錄的標準方式,使用它可以使你的程式碼與 Go 語言的其他部分保持一致。未來的相容性:雖然
ioutil.ReadFile
在當前版本的 Go 中仍然可用,但它在未來的版本中可能會被完全移除。使用os.ReadFile
可以確保你的程式碼在未來版本的 Go 中仍然有效。效能:在某些情況下,
os.ReadFile
可能提供了更好的效能,因為它直接利用了 Go 的內部機制來最佳化檔案讀取操作。
switch
- 會自動 break ,除非使用 fallthrough
- switch 後可以沒有表示式,case裡面寫明即可
package main import ( "fmt" ) func grade(score int) string { g := "" switch { case score < 0 || score > 100: panic(fmt.Sprintf("Wrong score: %d", score)) case score < 60: g = "F" case score < 80: g = "C" case score < 90: g = "B" case score <= 100: g = "A" } return g } func main() { fmt.Println( grade(0), grade(50), grade(70), grade(80), grade(90), grade(100), ) }