strings包提供字串常用操作函式:
strconv提供字串型別與其他型別相互轉化的函式:
反射修改基本型別
如果在valueof中傳遞的不是位址,則得到的是乙個非指標物件,是唯讀型別
當我們通過valueof傳遞位址時,得到的value物件是指標物件,與原物件有密切關係
指標物件因為安全原因,不允許使用set***進行修改,所以需要通過elem方法獲得該指標物件對應的值物件(此物件基本等價於原始物件,在其上的修改也回作用到原始物件上),此時的值物件既可以進行set修改值
可以通過value的canset方法判斷,其是否允許修改操作,如
var x float64 = 3.4
v := reflect.valueof(&x)
v = v.elem()
v.setfloat(1.25)
println(v.float())
println(x)
反射修改結構型別
如果value物件是乙個方法物件,則可以通過call方法進行呼叫,傳遞引數為value型別的slic,代表方法形參,函式返回值也是一組value物件slice
需要注意的是,結構型別的成員(結構內與結構外),只有以大寫字母開頭的字段或者方法,才能被反射呼叫和修改,大寫開頭的字段代表為公開字段,否則代表不能反射修改的字段
func (v value) call(in value) value
func(a a) read()
func main(),
num: 9, }
v := reflect.valueof(&a).elem()
println(v.numfield())// 2
v.field(0).call(nil) //call innerfunc
v.method(0).call(nil) //call read
println(v.field(1).int()) //9
v.field(1).setint(0)
println(v.field(1).int()) //0
}
golang中的管道型別經常用於協程的協調上,select可以實現對管道事件的監控,在對應事件觸發時,執行對應事件(其會在沒有管道事件觸發時阻塞,直到監聽的管道事件之一觸發的時候喚醒執行對應事件),比如
//ch1和ch2都是chan型別
select
Golang學習筆記 四 資料型別
go語言內建了豐富的資料型別,主要分為四類,基礎資料型別 復合資料型別,引用資料型別及介面資料型別,另外,在這些型別的基礎,也支援我們根據自己的資料型別,這就為我們編寫 提供很大的便利性。這一節,我們先學一下基礎資料型別中的整數型別。整數型別分兩種,有符號 int8,int16,int32,int6...
Golang學習筆記
如果乙個method的receiver是 t,你可以在乙個t型別的例項變數v上面呼叫這個method,而不需要 v去呼叫這個method 即不需要 v method 如果乙個method的receiver是t,你可以在乙個 t型別的變數p上呼叫這個method,而不需要 p去呼叫這個method。i...
golang學習筆記
與c語法不同之處 1.引數列表中各個引數型別相同時可以只寫出最後乙個,如 add x,y int int 2.型別在引數名 變數 函式 後面 3.函式的左大括號要跟函式名同一行,否則編譯不過 4.函式定義要先寫關鍵字func在函式開頭 函式外的每個語句都要以func var等等關鍵字開頭 5.在包或...