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接口函数+时间接口函数+内置函数+错误处理相关推荐

  1. php内置函数和扩展,PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别

    #EXAMPLE $str_uncode = "简体中文Chinese(Simplified)"; //统计字符串长度 echo strlen($str_uncode).' ';/ ...

  2. Python68个内置函数大总结,内置函数的骚操作来了!!

    ​学了快一年的Python了,突然发现,内置函数能够大大的加快开发时的效率,花了一周时间整理了一下68个内置函数,来看看内置函数的骚操作吧! 由于平台原因图片不是很清晰如果想要获取高清的照片或者pdf ...

  3. [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢

    页面中调用函数--之${fn:}内置函数 函数描写叙述 fn:contains(string, substring) 假设參数string中包括參数substring,返回true fn:contai ...

  4. python for everybody作业和测试答案_【计算题】编写函数,模拟 Python 内置函数 reversed() 。...

    [计算题]编写函数,模拟 Python 内置函数 reversed() . 更多相关问题 In California, there lives a pretty girl called Donna G ...

  5. python在匿名函数作和_python内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  6. 不是python内置函数的是_Python内置函数

    print(abs(2)) #求出绝对值 print(all(([],1,3))) #传1个可跌倒对象,元素中包含的全部为可迭代对象,返回True 其他返回False #如果可迭代对象是空,就返回Tr ...

  7. 第七篇 python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...

  8. python中execute函数_Python 中的内置函数与模块

    封面图片来源:沙沙野 内容概览 内置函数(二) 模块概念 内置函数(二) ord():输入字符找该字符编码 (Unicode) 的位置 print 2. chr():输入位置数字找出其对应的字符 pr ...

  9. python int函数详解_Python内置函数OCT详解

    英文文档:oct ( x ) Convert an integer number to an octal string. The result is a valid Python expression ...

  10. python常用内置函数总结-Python 常用内置函数

    Python 常用内置函数如下: 1. abs()函数返回数字的绝对值. print( abs(-45) )# 返回45print("abs(0.2):",abs(0.2))#返回 ...

最新文章

  1. Java 未死,依然很牛逼!
  2. Java 洛谷 P1319 压缩技术
  3. oracle导出表格式csv,Oracle数据库文件导出为CSV格式的方法
  4. MariaDB 双主复制的配置
  5. Unity3D的断点调试功能
  6. 计算机专业的双证在职研究生,计算机类在职研究生最终能获得双证吗难度是不是很大呢...
  7. 阿里云 腾讯云 服务器挂载数据盘
  8. python教育学_跟着老男孩教育学Python开发【第三篇】:Python函数
  9. git本地commit之后如何同步到远程
  10. 01-09 Linux三剑客-sed
  11. 2019118_四个化学数据分析(2)
  12. php 调试环境配置
  13. 测验8: 程序设计方法学 (第8周)(编程题)
  14. Java 支付对接之微信/支付宝扫码支付(也就是H5支付)
  15. 64 位下,dsoframer.ocx 注册时失败,错误代码为 0x80070005
  16. java replaceLast
  17. 网上图书 java web_JavaWeb网上图书商城完整项目--验证码
  18. 1489: L先生与质数V4(二分+大区间求素数模板)
  19. sqlserver 电话号3-8位用*号代替
  20. css背景图铺满整个屏幕

热门文章

  1. 浏览器版本不支持页面示例 supper.html
  2. Java BIO、NIO、AIO 学习
  3. Bitmap 多语言实现及应用
  4. Web前端优化需要注意的点
  5. ASP.NET在.ashx文件中使用session出异常,未将对象引用到对象的实例
  6. Webservice 的设计和模式
  7. 值得推荐的中文版WF/WCF图书
  8. 沙漠之旅(二维dp)
  9. 添加文件然后自动打开
  10. 浅入深出Vue:文章编辑