【原创】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\n", year, month, day, hour, minute, send)
fmt.Printf("time:%s\n", 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)
}

  

 

posted @ 2019-10-17 20:35  shuyang  阅读(652)  评论(0编辑  收藏  举报