Go进阶(4): string接口函数+时间接口函数+内置函数+错误处理
1. string接口函数
- len():内建函数,返回字符串/数组的长度,按字节(UTF-);例如,ascii字符占一个字节,汉字占三个字节;
- r:=[]rune(str):字符串遍历函数,同时可以处理中文问题,中间是转成了slicer类型
package mainimport "fmt"func main() {str := "hello 沈子恒"for i:=0; i<len(str); i++{ //会出现中文乱码情况fmt.Printf("字符%c ", str[i])}str_rune := []rune(str)for i:=0; i<len(str_rune); i++{ //会出现中文乱码情况fmt.Printf("字符%c ", str_rune[i])}
}
运行结果:
字符=h 字符=e 字符=l 字符=l 字符=o 字符= 字符=æ 字符=² 字符= 字符=å 字符= 字符= 字符=æ 字符= 字符=
字符=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 ... 返回的是指针
package mainimport ("fmt""reflect"
)func main() {num1 := 100fmt.Println("num1的类型, 值%v, 地址%v:", reflect.TypeOf(num1), num1, &num1)num2 := new(int)fmt.Println("num2的类型, 值%v, 地址%v:", reflect.TypeOf(num2), num2, &num2)
}
运行结果:
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
package mainimport "fmt"
func test(){defer func() {err := recover()if err != nil {fmt.Println("Error:", err)}}()num1 := 10num2 := 0res := num1/num2fmt.Println(res)
}func main() {test()fmt.Println("程序可以正常执行...")
}
运行结果:
Error: runtime error: integer divide by zero
程序可以正常执行...
- errors.New和panic
Go程序中,也支持自定义错误,使用errors.New()和panic内置函数。
errors.New(“错误说明”),会返回一个error类型的值,表示一个错误;
panic内置函数,接受一个interface{}类型的值作为参数,可以接受error类型的量,输出错误信息,并退出程序。
Go进阶(4): string接口函数+时间接口函数+内置函数+错误处理相关推荐
- php内置函数和扩展,PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别
#EXAMPLE $str_uncode = "简体中文Chinese(Simplified)"; //统计字符串长度 echo strlen($str_uncode).' ';/ ...
- Python68个内置函数大总结,内置函数的骚操作来了!!
学了快一年的Python了,突然发现,内置函数能够大大的加快开发时的效率,花了一周时间整理了一下68个内置函数,来看看内置函数的骚操作吧! 由于平台原因图片不是很清晰如果想要获取高清的照片或者pdf ...
- [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
页面中调用函数--之${fn:}内置函数 函数描写叙述 fn:contains(string, substring) 假设參数string中包括參数substring,返回true fn:contai ...
- python for everybody作业和测试答案_【计算题】编写函数,模拟 Python 内置函数 reversed() 。...
[计算题]编写函数,模拟 Python 内置函数 reversed() . 更多相关问题 In California, there lives a pretty girl called Donna G ...
- python在匿名函数作和_python内置函数和匿名函数
楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...
- 不是python内置函数的是_Python内置函数
print(abs(2)) #求出绝对值 print(all(([],1,3))) #传1个可跌倒对象,元素中包含的全部为可迭代对象,返回True 其他返回False #如果可迭代对象是空,就返回Tr ...
- 第七篇 python基础之函数,递归,内置函数
阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...
- python中execute函数_Python 中的内置函数与模块
封面图片来源:沙沙野 内容概览 内置函数(二) 模块概念 内置函数(二) ord():输入字符找该字符编码 (Unicode) 的位置 print 2. chr():输入位置数字找出其对应的字符 pr ...
- python int函数详解_Python内置函数OCT详解
英文文档:oct ( x ) Convert an integer number to an octal string. The result is a valid Python expression ...
- python常用内置函数总结-Python 常用内置函数
Python 常用内置函数如下: 1. abs()函数返回数字的绝对值. print( abs(-45) )# 返回45print("abs(0.2):",abs(0.2))#返回 ...
最新文章
- Java 未死,依然很牛逼!
- Java 洛谷 P1319 压缩技术
- oracle导出表格式csv,Oracle数据库文件导出为CSV格式的方法
- MariaDB 双主复制的配置
- Unity3D的断点调试功能
- 计算机专业的双证在职研究生,计算机类在职研究生最终能获得双证吗难度是不是很大呢...
- 阿里云 腾讯云 服务器挂载数据盘
- python教育学_跟着老男孩教育学Python开发【第三篇】:Python函数
- git本地commit之后如何同步到远程
- 01-09 Linux三剑客-sed
- 2019118_四个化学数据分析(2)
- php 调试环境配置
- 测验8: 程序设计方法学 (第8周)(编程题)
- Java 支付对接之微信/支付宝扫码支付(也就是H5支付)
- 64 位下,dsoframer.ocx 注册时失败,错误代码为 0x80070005
- java replaceLast
- 网上图书 java web_JavaWeb网上图书商城完整项目--验证码
- 1489: L先生与质数V4(二分+大区间求素数模板)
- sqlserver 电话号3-8位用*号代替
- css背景图铺满整个屏幕