Go进阶(4): string接口函数+时间接口函数+内置函数+错误处理
1. string接口函數
- len():內建函數,返回字符串/數組的長度,按字節(UTF-);例如,ascii字符占一個字節,漢字占三個字節;
- r:=[]rune(str):字符串遍歷函數,同時可以處理中文問題,中間是轉成了slicer類型
運行結果:
字符=h 字符=e 字符=l 字符=l 字符=o 字符= ?字符=? 字符=2 字符=?字符=? 字符=- 字符=?字符=? 字符=?字符=?
字符=h 字符=e 字符=l 字符=l 字符=o 字符= ?字符=沈 字符=子 字符=恒
- n, err = strconv.Atoi(str):字符串轉Int類型,err可以打印錯誤信息;如,“123”可以轉成Int,而“hello”不可以;通常用于輸入類型的校驗
- str = strconv.itoA(): 轉成字符串
- var bytes = []byte("hello go"): 字符串轉成字符,采用了[]byte切片
- str = string([]byte{97,98,99}): 字符list轉成字符串
- str = strconv.FormatInt(int num, 2/8/16): 10進制轉成2/8/16進制
- strings.Contains("seafood", "foo"): 字符串中是否包含字串
- strings.Count(“cheese”,"e"): 字符串中包含字串的數量
- stringsEqualFold(“abc”, "ABC"): 不區分大小寫判斷字符串是否相等 (區別==,區分大小寫)
- strings.Index("helloworld","wor"): 返回子串在字符串中第一次出現的index,如果沒有返回-1
- strings.LastIndex("go golang", "go"): 返回子串在字符串中最后出現的位置
- strings.Replace("go golang", "go", "go語言", 1):字符串替換,-1指全部替換,1指從前向后檢索的第一個子串
- strings.Split("hello golang, hello world", ","): 按照指定字符切分字符串,形成字符串數組
- strings.Lower("HELLO") / strings.Upper("hello"): 字符串轉成小寫/大寫
2. 時間/日期接口函數(time包)
- now := time.Now(): 獲取當前的時間
- now.Year()?now.Month()?now.Day()?now.Hour()?now.Minute()?now.Second() : 獲取年月日時分秒
- now.Format: 格式化日期時間格式
- time.Sleep(100 * time.Millisecond): 休眠時間
3. 內置函數new和make
- new:用來分配內存,主要用來分配值類型,比如int / float32 / struct ... 返回的是指針
運行結果:
num1的類型, 值, 地址:? int 100? ? ? ? ? ? ? ? ? ? 0xc000062058
num2的類型, 值, 地址:?*int 0xc000062090 0xc00008e020
- make: 用來分配內存,主要用來分配引用類型,比如channel / map / slice
?
4. 錯誤處理
默認情況下,程序發生錯誤后(panic),程序就會退出;如果我們希望,當發生錯誤后,程序可以捕捉錯誤,及時發送錯誤報告,并正常執行后下面的正確代碼。
Go不支持傳統的try...catch...finally處理機制;引入了defer / panic / recover進行處理;即Go中可以拋出一個panic異常,然后在defer中通過recover捕獲這個異常,然后進行正常處理。
- panic-defer-recover
運行結果:
Error: runtime error: integer divide by zero
程序可以正常執行...
- errors.New和panic
Go程序中,也支持自定義錯誤,使用errors.New()和panic內置函數。
errors.New(“錯誤說明”),會返回一個error類型的值,表示一個錯誤;
panic內置函數,接受一個interface{}類型的值作為參數,可以接受error類型的量,輸出錯誤信息,并退出程序。
總結
以上是生活随笔為你收集整理的Go进阶(4): string接口函数+时间接口函数+内置函数+错误处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盖茨每一秒能赚多少钱,他现在最担心的是什
- 下一篇: Go进阶(5): 数组与切片+多维数组+