iT邦幫忙

3

蠻可愛的golang #29 - Error介紹 與 _ 變數的應用方式

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

2 則留言

0
老鷹(eagle)
iT邦高手 1 級 ‧ 2014-08-08 14:46:42

最近老鷹的出場頻率還真高!!
後面要簽名的請排隊簽名毆飛

賽門 iT邦超人 1 級 ‧ 2014-08-08 16:49:13 檢舉

簽名

sten iT邦新手 3 級 ‧ 2014-08-08 17:35:43 檢舉

拍照

0
總裁
iT邦好手 1 級 ‧ 2014-08-08 14:49:51

三圍怎麼只有兩個??...疑惑

另一個是鳥~~~哈哈

外獅佬 iT邦大師 1 級 ‧ 2014-08-09 02:28:40 檢舉

hitomitanaka提到:
另一個是鳥

人妖啊.....(狂奔)

我要留言

立即登入留言