if v == 0 { // v等於0 }如果將 v 當做整型物件,那麼判斷 v 值就可以增加一個 IsZero() 方法,通過這個方法就可以判斷 v 值是否為 0,例如:
if v.IsZero() { // v等於0 }為基本型別新增方法的詳細實現流程如下:
package main import ( "fmt" ) // 將int定義為MyInt型別 type MyInt int // 為MyInt新增IsZero()方法 func (m MyInt) IsZero() bool { return m == 0 } // 為MyInt新增Add()方法 func (m MyInt) Add(other int) int { return other + int(m) } func main() { var b MyInt fmt.Println(b.IsZero()) b = 1 fmt.Println(b.Add(2)) }程式碼輸出如下:
true
3
package main import ( "fmt" "io/ioutil" "net/http" "os" "strings" ) func main() { client := &http.Client{} // 建立一個http請求 req, err := http.NewRequest("POST", "http://www.163.com/", strings.NewReader("key=value")) // 發現錯誤就列印並退出 if err != nil { fmt.Println(err) os.Exit(1) return } // 為檔頭新增資訊 req.Header.Add("User-Agent", "myClient") // 開始請求 resp, err := client.Do(req) // 處理請求的錯誤 if err != nil { fmt.Println(err) os.Exit(1) return } data, err := ioutil.ReadAll(resp.Body) fmt.Println(string(data)) defer resp.Body.Close() }程式碼執行結果如下:
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
type Header map[string][]string func (h Header) Add(key, value string) { textproto.MIMEHeader(h).Add(key, value) } func (h Header) Set(key, value string) { textproto.MIMEHeader(h).Set(key, value) } func (h Header) Get(key string) string { return textproto.MIMEHeader(h).Get(key) }程式碼說明如下:
package main import ( "fmt" "time" ) func main() { fmt.Println(time.Second.String()) }第 9 行的 time.Second 是一個常數,下面程式碼的加粗部分就是 time.Second 的定義:
const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond = 1000 * Microsecond Second = 1000 * Millisecond Minute = 60 * Second Hour = 60 * Minute )Second 的型別為 Duration,而 Duration 實際是一個 int64 的型別,定義如下:
type Duration int64
它擁有一個 String 的方法,部分定義如下:func (d Duration) String() string { // 一系列生成buf的程式碼 … return string(buf[w:]) }Duration.String 可以將 Duration 的值轉為字串。