閉包 = return後的函式 + 返回的函式外部變數的引用
package main
import
"fmt"
// 閉包是什麼?
// 閉包是乙個函式,這個函式引用了他外部作用域的乙個變數
// 閉包底層的原理
// 1. 函式可以作為返回值
// 2. 函式內部查詢變數的順序,先在自己內部查詢,找不到往外層找
// 閉包 = return後的函式 + 返回的函式外部變數的引用
func
calc
(base int)(
func
(int
)int
,func
(int
)int
) sub :=
func
(i int
)int
return add, sub
}func
main()
函式作用
close
主要用來關閉channel
len用來求長度,比如string、array、slice、map、channel
new用來分配記憶體,主要用來分配值型別,比如int、struct。返回的是指標
make
用來分配記憶體,主要用來分配引用型別,比如chan、map、slice
用來追加元素到陣列、slice中
panic和recover
用來做錯誤處理
defer相關面試題
var x =
100// 定義乙個全域性變數
funcf1(
)func
main()
// 語句塊作用域
for i :=
0; i <
10; i++
// fmt.println(i) // 報錯,因為i是for語句塊內的
fmt.scan(&s)佔位符fmt.scanf(「姓名是%s,年齡是%d,班級是%s\n」, name, age, class)
fmt.scanln(&name, &age, &class)
這三個都是需要跟使用者終端互動的,函式引數傳入的都是指標
作用%v
值的預設格式標識
%+v類似%v,但是輸出結構體時會新增欄位名
%#v值的go語法標識,比如字串會用雙引號包裹等,更加詳細
%t列印值的型別
%%百分號, 舉例:fmt.printf("%d%%", 50)就是50%
佔位符作用
%t可傳布林值
佔位符作用
%b二進位制
%c字元,該值對應的unicode碼值
%d十進位制
%o八進位制數
%x十六進製制數,使用a-f
%x十六進製制,使用a-f
%u表示unicode格式
%q該值對應的單引號括起來的go語法字元字面值,必要時會採用安全的轉義表示
佔位符作用
%b無小數部分,二進位制指數的科學技術法,不太用
%e科學計數法,小寫的e
%e科學計數法,大寫的e
%f浮點數
%f等價於%f
%g根據實際情況採用%e還是%f格式(以獲得更簡潔、準確的輸出)
%g根據實際情況採用%e還是%f格式(以獲得更簡潔、準確的輸出)
佔位符作用
%s直接輸出字串或byte
%q該值對應的雙引號括起來的go語法字元字面值,必要時會採用安全的轉義表示
%x每個位元組用兩字元十六進製制表示,使用a-f,不太用
%x每個位元組用兩字元十六進製制標識,使用a-f,不太用
佔位符作用
%p標識十六進製制,並加上前導的ox
寬度識別符號
作用%f
預設寬度,預設精度
%9f寬度9,預設精度,位數不夠9,小數點後面補0(小數點佔1位)
%.2f
預設寬度,精度2,小數點後面留2位
%9.2f
寬度9,精度2,小數點後面2位,不夠9位,前面補空格
%9.f
寬度9,精度0,小數點後面0位,也就是沒有小數點,前面補空格
佔位符作用
』+』總是輸出數值的正負號;對%q(%+q)會生成全部是ascii字元的輸出(通過轉義);
』 『對數值,正數前加空格而負數前加負號;對字串採用%x或%x時(% x或% x)會給各列印的位元組之間加空格
』-』在輸出右邊填充空白而不是預設的左邊(即從預設的右對齊切換為左對齊);
』#』八進位制數前加0(%#o),十六進製制數前加0x(%#x)或0x(%#x),指標去掉前面的0x(%#p)對%q(%#q),對%u(%#u)會輸出空格和單引號括起來的go字面值;
『0』使用0而不是空格填充,對於數值型別會把填充的0放在正負號後面;
你有50枚金幣,需要分配給以下幾個人:matthew,sarah,augustus,heidi,emilie,peter,giana,adriano,aaron,elizabeth。分配規則如下:
a. 名字中每包含1個』e』或』e』分1枚金幣
b. 名字中每包含1個』i』或』i』分2枚金幣
c. 名字中每包含1個』o』或』o』分3枚金幣
d: 名字中每包含1個』u』或』u』分4枚金幣
寫乙個程式,計算每個使用者分到多少金幣,以及最後剩餘多少金幣?
程式結構如下,請實現 『dispatchcoin』 函式
package main
import
("fmt"
"strings"
)var
( coins =
50 users =
string
distribution =
make
(map
[string
]int
,len
(users)))
// 給使用者構建貢獻表,map
func
distributionmap()
}// 統計名字中某個字元的個數
func
calcnamestr
(name string
, char string
, perused int
)int
}return count
}// 金幣消耗
func
usecoins
(user string
)int
count :=
0for letter :=
range letterusecoinsmap
return count
}// 計算剩餘個數
func
dispatchcoin()
intreturn coins
}func
main()
webgl入門到成仙 入門 01刷底色的基本步驟
css刷底色跟webgl刷底色有本質區別 css刷底色是無法做webgl運算的 設定canvas屬性,不要再css設定,要設定在canvas的dom上 二維畫筆 const gl canvas.getcontext 2d 三維畫筆 const gl canvas.getcontext webgl 清...
php從入門到放棄 Day5
2016 9 16 22 57 14 day5.php html css基礎 css全稱 層疊樣式表 cascading style sheets 它主要是用於定義html內容在瀏覽器內的顯示樣式,如文字大小 顏色 字型加粗等。p 標籤文字塊 css 樣式由選擇符和宣告組成,而宣告又由屬性和值組成。...
Bootstrap學習從入門到入坑 Day 01
day1 起步 lang en charset utf 8 bootstrap學習demotitle rel stylesheet href css bootstrap.css rel stylesheet href css bootstrap.min.css head test body src ...