c 中的new Golang程式設計中遇到的小陷阱

2021-10-13 18:33:38 字數 1515 閱讀 3635

go語言規定不允許在整數型變數和浮點型變數之間進行任何數**算。錯誤例子如下:

參考:go語言中文文件:www.topgoer.com

**:

var n, m = 21, 2.1    // 下面一行會報錯:invalid operation: n / m (mismatched types int and float64)    fmt.println(n / m)
改正結果如下:

var n = 21 / 2.1    fmt.println(n)
go語言規定數值運算的運算元必須具有相同的型別,除非該操作包含型別轉換或非型別化常量。錯誤例子如下:

var n = 3        // 下面一行會報錯:invalid operation: timeout * time.millisecond (mismatched types int and time.duration)    fmt.println(n * time.millisecond)
改正結果如下:

// 1. 使用常量    const n = 3    fmt.println(n * time.millisecond)     // 2. 使用相同型別    var n time.duration = 10    fmt.println(n * time.millisecond)
1)宣告指標結構體時,如果未初始化,則初始值為nil,因此只有初始化後,才能訪問欄位或為字段賦值。例子如下:

type city struct  var c *city// 錯誤用法, 未初始化, c為nilc.name = "osaka" c = &city{}// 初始化後,結構體指標指向某個結構體位址,才能訪問字段,為字段賦值c.name = "tokyo"  // 因此,常用的做法如下c := &city{}    c.name = "london"
2)使用go內建new()函式,可以分配記憶體來初始化結構休,並返回分配的記憶體指標,因為已經初始化了,所以可以直接訪問字段。例子如下:

var c = new(city)c.name = "newyork"
3)因為把結構體傳給函式是值傳遞,所以在函式內修改結構體的字段並不會影響原結構體,但如果將指標結構體傳給函式,則在函式中使用指針對結構體所做的修改,都會影響到指標指向的結構體。例子如下:

func main()     c2 := new(city)    change(c1,c2)    fmt.println(c1,c2)}func change(c1 city,c2 *city)
4)結構體不能包含自身,比如city中的字段不能是city型別,但可以是*city,例子如下:

C 中的cookie程式設計

微軟公司視窗2000伺服器版 net framework sdk beta 2 c 進行cookie方面程式設計是通過asp.net頁面來實現的。二 c 如何寫入cookie 為了寫入cookie,他的步驟主要有三步,具體如下 首先就要建立乙個httpcookie物件,通過這個物件來構造乙個cook...

C 中的cookie程式設計

原始檔 http www.chinaaspx.com archive dotnet 16394.htm 一 本文介紹的程式設計和執行的軟體環境 微軟公司視窗2000伺服器版 net framework sdk beta 2 c 進行cookie方面程式設計是通過asp.net頁面來實現的。二 c 如...

C 中的cookie程式設計

c 中的cookie程式設計 微軟公司視窗2000伺服器版 net framework sdk beta 2 c 進行cookie方面程式設計是通過asp.net頁面來實現的。二 c 如何寫入cookie 為了寫入cookie,他的步驟主要有三步,具體如下 首先就要建立乙個httpcookie物件,...