2.4 常用的内置函数

2.4.1 字符串常用内置函数

  • https://golang.org/pkg/strings/

  • https://golang.org/pkg/strconv/

  • 统计字符串长度的函数len(str)

  • 字符串遍历,同时处理有中文的问题r:=[]rune(str)

  • 字符串转整数strconv(str), strconv.ParseInt()

    func strconvDemo() {
    v := "10"
    if s, err := strconv.Atoi(v); err == nil {
    fmt.Printf("%T, %v", s, s)
    }
    }
  • 整数转字符串strconv(str)

    func strItoa(){
    i := 10
    s := strconv.Itoa(i)
    fmt.Printf("%T, %v\n", s, s)
    }
  • 字符串转成byte切片bytes := []byte("asdfgh"))

  • byte切片转换成字符串: str4 := string([]byte{67, 68, 69, 70, 72})

  • 10进制数转换为其他进制数(转换后为字符串类型): str = strconv.FromatInt(123, 2)

    func ten2others(){
    s10 := strconv.FormatInt(v2, 10)
    fmt.Printf("%T, %v\n", s10, s10) s16 := strconv.FormatInt(v2, 16)
    fmt.Printf("%T, %v\n", s16, s16)
    }
  • 查找字符串中是否包含指定字符串strings.Contains("seafood","food")

  • 统计字符串中子字符串的个数strings.Count("aaaaaaa","a")

  • 忽略大小写的字符串比较函数strings.EqualFold("Chinese","chinese")

  • 查找子字符串第一次出现的位置strings.Index("stringsGolang","lang")

  • 查找子字符串最后一次出现的位置strings.LastIndex("stringsGolang","lang")

  • 替换指定字符串: strings.Replace("Go Go Go", "Go", "Golang", 1)

  • 按指定字符分割字符串: strings.Split("Hello 北京 成都 上海 深圳", " ")

  • 字符串大小写转换: strings.ToLower、strings.ToUpper

  • 去除字符串左右两端的指定字符(无法去除字符串内部的字符):strings.Trim(" aaaaaaaaaC__", " _")

  • 判断一个字符串是否以指定字符串开头: func HasPrefix(s, prefix string) bool

  • 判断一个字符串是否以指定字符串结尾:func HasSuffix(s, suffix string) bool

2.4.2 常用的时间和日期相关函数

  • https://golang.org/pkg/time/

  • 时间、日期相关函数需要导入time包

  • 获取当前时间:

    func getTime(){
    //1. 获取当前时间
    now := time.Now()
    fmt.Printf("Now = %v Type=%T", now, now)
    //Now = 2021-02-23 16:14:42.0211031 +0800 CST m=+0.000997301 Type=time.Time
    }
  • 获取当前时间的详细信息:

    func detail(){
    //2.获取年月日时分秒
    now := time.Now()
    fmt.Printf("年=%v\n", now.Year())
    fmt.Printf("月=%v\n", now.Month())
    fmt.Printf("日=%v\n", int(now.Day()))
    fmt.Printf("时=%v\n", now.Hour())
    fmt.Printf("分=%v\n", now.Minute())
    fmt.Printf("秒=%v\n", now.Second())
    }
  • 格式化时间格式:(format的字符串数值是固定的,必须是2006/01/02 15:04:05)

    func timeFormat(){
    now := time.Now()
    fmt.Println(now.Format("2006/01/02 15:04:05"))
    fmt.Println(now.Format("2006-01-02"))
    fmt.Println(now.Format("15:04:05"))
    }
  • 时间常量:

    const (
    Nanosecond Duration = 1
    Microsecond = 1000 * Nanosecond
    Millisecond = 1000 * Microsecond
    Second = 1000 * Millisecond
    Minute = 60 * Second
    Hour = 60 * Minute
    )
    const (
    ANSIC = "Mon Jan _2 15:04:05 2006"
    UnixDate = "Mon Jan _2 15:04:05 MST 2006"
    RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
    RFC822 = "02 Jan 06 15:04 MST"
    RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
    RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
    RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
    RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
    RFC3339 = "2006-01-02T15:04:05Z07:00"
    RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
    Kitchen = "3:04PM"
    // Handy time stamps.
    Stamp = "Jan _2 15:04:05"
    StampMilli = "Jan _2 15:04:05.000"
    StampMicro = "Jan _2 15:04:05.000000"
    StampNano = "Jan _2 15:04:05.000000000"
    )
  • 结合sleep来使用时间常量

    func sleepDemo(){
    for {
    fmt.Println(time.Now().Second())
    time.Sleep(time.Millisecond * 100)
    }
    }
  • 获取当前unix时间戳

    func getUnixTime(){
    fmt.Println(time.Now().Unix())
    fmt.Println(time.Now().UnixNano())
    }

2.4.3 内置函数

  • https://golang.org/pkg/builtin/ /内建函数/

  • len(): 获取字符串长度的函数:

  • new(): 用来分配内存,主要用来分配值类型,如int, float64,

  • make(): 用来分配内存,主要分配引用类型的内存, 如切片,channel, map等

func main() {
num1 := 100
fmt.Printf("num1的类型为:%T, num1的值为:%d, num1的地址为:%p\n", num1, num1, &num1) num2 := new(int) /*new的返回值是一个指针*/
fmt.Printf("num2的类型为:%T, num2的值为:%d, num2的地址为:%p\n", num2, *num2, &num2)
}

最新文章

  1. 微信公众帐号开发-消息创建时间long型与标准时间的互相转换
  2. 常用的js正则表达式
  3. java-正则表达式过滤字符串中的html标签
  4. Lamp源码搭建
  5. 【XLL API 函数】 xlDefineBinaryName
  6. Python(2.7.6) ConfigParser - 读写配置文件
  7. html hack 列表
  8. 计算机语言学习导论[C/C++]
  9. hadoop搭建杂记:Linux下hostname的更改办法
  10. MATLAB绘制等高线和梯度场
  11. 2272: [Usaco2011 Feb]Cowlphabet 奶牛文字
  12. 企业级LNMP架构搭建实例(基于Centos6.x)
  13. js前端读写文件的方法(json、excel)
  14. 51 nod 1427 文明 (并查集 + 树的直径)
  15. 编译GDAL支持ArcObjects
  16. Mint-UI Picker 三级联动
  17. [React] react+redux+router+webpack+antd环境搭建一版
  18. C语言之单元测试
  19. conductor编译镜像
  20. HTTP.ResponseCode

热门文章

  1. Hadoop 3.1.1 - Yarn 服务 - 快速开始
  2. 大都市meg DFS序
  3. AndroidStudio 插件总结
  4. 解决:无法从 Windows 应用商店下载。请检查网络连接
  5. Python中print()函数的用法
  6. rsa加密初探
  7. 还怕问源码?Github上神级Android三方源码解析手册,已有7.6 KStar
  8. .Net Core with 微服务 - 分布式事务 - 2PC、3PC
  9. 接口自动化测试之httprunner初探
  10. Python语言系列-09-socket编程