Hike News
Hike News

Go初識-day5-時間和日期、指針

時間和日期類型

introduction

  1. 時間與日期類型位於time包中
  2. 時間類型 為time.Time用來表示時間
  3. time.Duration用來表示奈秒
  4. 一些常量:
    1
    2
    3
    4
    5
    6
    7
    8
    const (
    Nanosecond Duration = 1
    Microsecond = 1000 * Nanosecond
    Millisecond = 1000 * Microsecond
    Second = 1000 * Millisecond
    Minute = 60 * Second
    Hour = 60 * Minute
    )

獲取當前時間

獲取當前時間使用time.Now()

example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
"fmt"
"time"
)

func main(){
now := time.Now()
Now_day := now.Day()
Now_Minute := now.Minute()
Now_Month := now.Month()
Now_Year := now.Year()

fmt.Println("now is:",now)
fmt.Println("day is:",Now_day)
fmt.Println("minute is:",Now_Minute)
fmt.Println("month is:",Now_Month)
fmt.Println("year is:",Now_Year)
}

result

1
2
3
4
5
6
now is: 2018-03-27 20:56:45.447703 +0800 CST m=+0.004010601
day is: 27
minute is: 56
month is: March
year is: 2018
2018/03/27-20:56:45

時間輸出格式化

example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
"fmt"
"time"
)

func main(){
now := time.Now()

//1
fmt.Printf("%02d/%02d/%02d-%02d:%02d:%02d\n",
now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute(),now.Second())

//2
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]
}

[1] 第二種時間必須為Go誕生的時間,不能自己隨便定義,否則輸出的時間不對

result

1
2
3
4
2018/03/27-21:21:09
27/3/2018 21:21
2018/3/27 21:21
2018/3/27

指針類型

Introduction

  1. 變量預設存的為”“,稱值類型或是普通類型
  2. 使用&獲取變量的地址,例:var a int,要獲取a的地址就是&a
  3. 指針類型,變量存的是地址,這個地址存的才是值
  4. 獲取指針類型所指向的值,使用*,比如:var *p int, 使用*p獲取p指向的值

獲取變量地址

1
2
3
4
5
6
7
8
package main

import "fmt"

func main(){
var a int
fmt.Println("a address=",&a)
}

result

1
a address= 0xc042060080

函數傳入指針並修改值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func modify_var(a *int){ //[1]
*a = 10 //[3]
return
}

func main(){
var a int = 5
fmt.Println(a)
modify_var(&a) //[2]
fmt.Println(a)
}

[1] *int為int類型的指針,接受的值必須為指針類型
[2] &獲取變量的地址
[3] *獲取內存地址指向的值,進行修改

result

1
2
5
10