• 【原创】go语言学习(三)字符串串、时间和日期类型


    目录

    1.字符串串原理理解析
    2. 时间类型
    3. 日期类型

    字符串串原理理解析

    1.字符串串底层就是⼀一个byte数组,所以可以和[]byte类型互相转换
    2.字符串串之中的字符是不不能修改的,那怎么修改呢
    3.字符串串是由byte字节组成,所以字符串串的⻓长度是byte字节的⻓长度
    4.rune类型⽤用来表示utf8字符,⼀一个rune字符由1个或多个byte组成

    练习
    练习1:写⼀一个程序,对英⽂文字符串串进⾏行行逆序。

    练习2:写⼀一个程序,对包含中⽂文的字符串串进⾏行行逆序。

    // 逆序字符输出:文中olleh
    func testReverseStringV2() {
    	// rune表示UTF8字符
    	var str = "hello中文"
    	// 英文可以用byte
    	// var r []byte = []byte(str)
    	var r []rune = []rune(str)
    
    	for i := 0; i < len(r)/2; i++ {
    		tmp := r[len(r)-i-1] - r[i]
    		r[i] = tmp
    	}
    	str = string(r)
    	fmt.Println(str)
    }


    练习3:写⼀一个程序,判断⼀一个字符串串是否是回⽂文。

    // 是否是回文
    func testHuiWen() {
    	// rune表示UTF8字符
    	var str = "hello中文"
    	// 英文可以用byte
    	// var r []byte = []byte(str)
    	var r []rune = []rune(str)
    
    	for i := 0; i < len(r)/2; i++ {
    		tmp := r[len(r)-i-1] - r[i]
    		r[i] = tmp
    	}
    	str2 := string(r)
    	if str2 == str {
    		fmt.Println(str, "is huiwen")
    	} else {
    		fmt.Println(str, "is  not huiwen")
    	}
    }
    

      

    时间和日期类型

    1. time包
    2. time.Time类型,⽤用来表示时间
    3. 获取当前时间, now := time.Now()
    4. time.Now().Day(),time.Now().Minute(),time.Now().Month(),time.Now().Year()
    5. 格式化,fmt.Printf(“%02d/%02d%02d %02d:%02d:%02d”, now.Year()…)

    6. 获取当前时间戳,time.Now().Unix()。
    7. 时间戳转Time类型。
    8. 定时器器的简单使⽤用

    9. time.Duration⽤用来表示纳秒
    10. 一些常量量:

    const (  
        Nanosecond  Duration = 1  
        Microsecond          = 1000 * Nanosecond  
        Millisecond          = 1000 * Microsecond  
        Second               = 1000 * Millisecond  
        Minute               = 60 * Second  
        Hour                 = 60 * Minute 
    ) 
    

      

    8. 格式化:

    now := time.Now() 
    fmt.Println(now.Format(“02/1/2006 15:04”)) 
    fmt.Println(now.Format(“2006/1/02 15:04”))
    fmt.Println(now.Format(“2006/1/02”))

      

    练习1:写⼀一个程序,获取当前时间,并格式化成 2017/06/15 08:05:00形式

    //练习1
    func testFormat1() {
    now := time.Now()
    year := now.Year()
    month := now.Month()
    day := now.Day()
    hour := now.Hour()
    minute := now.Minute()
    // 秒
    send := now.Second()
    //now.Format 模板格式化,指定2006年1月2日
    // timeStr := now.Format("2006/01/02 15:04:05")
    timeStr := fmt.Sprintf("%02d/%02d/%02d %02d:%02d:%02d ", year, month, day, hour, minute, send)
    fmt.Printf("time:%s ", timeStr)
    }

      

    练习2:写⼀一个程序,统计⼀一段代码的执⾏行行耗时,单位精确到微秒。

    // 程序执行耗时微妙
    func testCost() {
    	start := time.Now().UnixNano()
    	for i := 0; i < 10; i++ {
    		time.Sleep(time.Millisecond)
    	}
    	end := time.Now().UnixNano()
    	cost := (end - start) / 1000
    	// 微秒
    	fmt.Printf("code cost:%d us", cost)
    }
    

      

  • 相关阅读:
    Eclipse去掉js错误校验
    教学平台详细设计
    CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
    通过CentOS克隆虚拟机后发现无法启动网卡或无法上网的解决办法
    使用U盘引导安装CentOS操作系统
    项目的热加载
    【转载】SQLServer全文搜索
    【转载】Lucence.Net
    【转载】Discuz!NT企业版之Sphinx全文搜索
    【转载】MySQL主从复制(MasterSlave)与读写分离(MySQLProxy)实践
  • 原文地址:https://www.cnblogs.com/wangshuyang/p/11694918.html
Copyright © 2020-2023  润新知