golang開發筆記No 5

2021-09-28 10:44:20 字數 1442 閱讀 3156

下面這段**能否編譯通過?如果可以,輸出什麼?

package main

import (

"fmt"

)const (

x = iota_y

z = "zz"

k p = iota

)func main()

//結果:0 2 zz zz 5

解析:iota是golang語言的常量計數器,只能在常量的表示式中使用。iota在const關鍵字出現時將被重置為0(const內部的第一行之前),const中每新增一行常量宣告將使iota計數一次(iota可理解為const語句塊中的行索引)。使用iota能簡化定義,在定義列舉時很有用。可以使用下劃線跳過不想要的值

下面賦值正確的是()

參***及解析:bd。知識點:nil 值。nil 只能賦值給指標、chan、func、inte***ce、map 或 slice 型別的變數。強調下 d 選項的 error 型別,它是一種內建介面型別,看下方貼出的原始碼就知道,所以 d 是對的。

type error inte***ce
關於init函式,下面說法正確的是()

init() 函式是用於程式執行前做包的初始化的函式,比如初始化包裡的變數等;

乙個包可以出線多個 init() 函式,乙個原始檔也可以包含多個 init() 函式;

同乙個包中多個 init() 函式的執行順序沒有明確定義,但是不同包的init函式是根據包匯入的依賴關係決定的(看下圖);

init() 函式在**中不能被顯示呼叫、不能被引用(賦值給函式變數),否則出現編譯錯誤;

乙個包被引用多次,如 a import b,c import b,a import c,b 被引用多次,但 b 包只會初始化一次;

引入包,不可出現死循壞。即 a import b,b import a,這種情況編譯失敗;

下面這段**輸出什麼以及原因?

package main

import (

"fmt"

)func hello() string

func main() else

}答案及解析:b。這道題目裡面,是將 hello() 賦值給變數 h,而不是函式的返回值,所以輸出 not nil。

下面這段**能否編譯通過?如果可以,輸出什麼?

package main

func getvalue() int

func main() :

println("inte***ce")

default:

println("unknown")

}}

golang開發筆記No 1

問題 下面這段 輸出 func main m make map int int for key,val range slice for k,v range m 結果 0 3 1 3 2 3 3 3參考解析 這是新手常會犯的錯誤寫法,for range 迴圈的時候會建立每個元素的副本,而不是元素的引用...

golang開發筆記No 6

關於channel,下面語法正確的是 下面這段 輸出什麼?package main import fmt type person struct func main fmt.println m p 參 及解析 0,列印乙個 map 中不存在的值時,返回元素型別的零值。這個例子中,m 的型別是 map ...

H5開發筆記

這兩天h5靜態頁面開發過程中的問題總結。1.viewport 移動開發必須的配置 內容寬為裝置寬度,初始化縮放倍數為1 不縮放 2.rem和px 1 px是相對於顯示器螢幕解析度而言的相對長度單位。2 rem是相對根元素的font size大小的相對單位,可以做到只修改根元素font size大小就...