Golang的錯誤處理機制比起C有加些料了.
也與Java的方式不同.
// hello33
package main
import (
"fmt"
"strconv"
)
func main() {
var (
str1 string = "56"
str2 string = "34"
str3 string = "Eagle"
err error
// golang 有 error 這種型別
i1 int
i2 int
)
i1, err = strconv.Atoi(str1)
if err != nil {
// 若發生錯誤
fmt.Printf("%s 無法轉成數字, 錯誤原因:%s\n", str1, err.Error())
// 列印原因, error有 Error()函數,轉成字串方式以利輸出
}
i2, err = strconv.Atoi(str2)
if err != nil {
fmt.Printf("%s 無法轉成數字, 錯誤原因:%s\n", str2, err.Error())
}
_, err = strconv.Atoi(str3)
// 因為 Eagle 是無法轉成數字的, 前面這位置的變數,實際上是不需要的.
// golang 還有一個特色, 宣告賦值變數後, 後續未使用, 編譯時會產生錯誤
// 就不通過了!! 故在此處 用 _ 表示此處的變數可以忽略.
if err != nil {
fmt.Printf("%s 無法轉成數字, 錯誤原因:%s\n", str3, err.Error())
}
// i1, i2 一定要使用. 列印出來吧.
fmt.Printf("i1 = %d i2 = %d\n", i1, i2)
}
執行結果:
λ ./hello33
Eagle 無法轉成數字, 錯誤原因:strconv.ParseInt: parsing "Eagle": invalid syntax
i1 = 56 i2 = 34
三圍怎麼只有兩個??...
另一個是鳥~~~
hitomitanaka提到:
另一個是鳥
人妖啊.....(狂奔)