【原创】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) }