《Go程式語言》第五章總結

2021-08-21 16:49:07 字數 1830 閱讀 4109

第五章:函式

·當函式存在返回值的時候必須顯式地以return語句結束,除非函式明確不會走完整個流程(比如乙個for死迴圈)

·函式的型別

稱為函式簽名,當乙個函式擁有相同的形參列表和返回列表時,認為這兩個函式的型別或簽名是相同的。形參和返回引數的名稱不會影響函式的型別

·實參是按值傳遞的,所以函式接收到的是沒有實參的副本,修改形參的變數並不會影響到實參的值。

但是,如果提供的實參是引用型別,比如 指標,slice,map,函式或者通道,那麼形參變數就有可能間接的修改實參變數

·有些函式沒有函式體,說明不是用go語言實現的,eg

package math

func sin(x float64) float64 //使用組合語言實現

·錯誤·習慣上將錯誤值作為最後乙個結果返回,如果錯誤只有乙個情況,結果通常設定為布林型別

·與其他語言不同,go語言通過使用普通變數的值而非異常來報告錯誤。儘管go有異常機制,但是go語言的異常是針對bug導致的預料外的錯誤

·go程式使用通常的控制流機制(比如if和return語句)也對錯誤

·錯誤處理策略:

當函式呼叫返回乙個錯誤時,呼叫者應該負責檢查錯誤並採取合適的處理應對

·首先最常見的是將錯誤傳遞下去,在子例程中發生的錯誤通過返回值返回給主例程,這樣在主獲得錯誤並進行判斷處理

·log.fatalf("size is down: %v\n",err) //以這種方式處理錯誤,它缺省會將時間和日期作為字首新增到錯誤訊息前

·當讀取檔案到結束的位置,io包會返回 eof 錯誤

package io

import "errors"

var eof = errors.new("eof")

eg: 一段讀取檔案的錯誤處理 (偽**)

for

if err != nil

}·函式變數:

var f func(int) int

func square(n int) int

func negative(n int) int

func product(m,n int) int

func main()

·不能呼叫乙個空的函式變數

var f func(int) int //

func main()

·defer : 正確使用defer是在成功獲得資源之後

defer resp.body.close() //確定了成功獲取資源之後釋放資源

·可以使用改方法來測試乙個函式的呼叫時間

func main()

func f1() func()

} ·延遲函式可以獲取和改變返回值

func main()

func double(x int) (result int) ()

return x + x

} ·注意延時函式在迴圈裡面的使用

for _,filename := range filenames

defer f.close //這樣f.close根本沒有在每次迴圈的時候關閉,會用盡資源

} 解決方案是:將for迴圈放到乙個函式裡面,這樣函式結束就會執行defer

for _, filename := range filenames

}func dofile(filename string) error

defer f.close() //這樣每次執行都會呼叫到f.close

}·後defer的先執行,相當於乙個棧

Go語言程式設計第五章網路程式設計

第五章 網路程式設計 1 以前其他的socket程式設計步驟 2 無論使用什麼協議建立什麼形式的連線,都只需要呼叫net.dial 函式,函式原型如下 func dial net addr string conn error net引數是網路協議的名字,addr引數是ip位址或網域名稱,而埠號以 的...

Python語言程式設計第五章

def 函式名 引數列表 函式體 return 返回值列表 沒有引數時也要保留圓括號 函式可以沒有return語句,在函式體結束位置將控制權返回給呼叫者 匿名函式 函式名 lambda 引數列表 表示式 f lambda x,y x y相當於 def 函式名 引數列表 函式體 return 返回值列...

第五章總結

5.1選單 選單是windows應用程式視窗的乙個非常重要的組成部分,視窗的選單欄一般在標題欄下面。這個選單通常稱為 主選單 5.1.1建立和程式設計選單 選單用於sdi 單文件介面 或mdi 多文件介面 以及基於對話方塊的應用程式,在基於對話方塊的應用程式中新建 設計並編輯選單後,在該對話方塊的 ...