golang從入門到成仙 day03

2021-10-21 03:46:31 字數 3573 閱讀 9388

閉包 = 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 ...