1.1 第一个程序 hello world
package main
import "fmt"
func main(){
fmt.Println("hello world")
}
结果:
hello world
说明:
1. go语言是编译型语言,编译命令:$ go build test.go ,会生成一个名字为test的文件,执行的命令为:$ ./test ,执行完后,就会出现 hello world
2. 如果想一步到位执行,也可以用$ go run test.go命令,这样会直接输出结果: hello world
1.2 命令行参数
与其他编程语言一样,go也支持从外部传入参数,其获取参数的方式与java等语言大同小异,都是通过一个数组(go叫切片)接收,如下所示:
package main
import (
"fmt"
"os"
)
func main() {
for i := 0; i < len(os.Args); i++ {
fmt.Println("args = ", os.Args[i])
}
}
执行命令:go run test.go haha hehe,输出结果:
args = /var/folders/mv/3nkb1mcx1y3cchh_p8n96t340000gp/T/go-build1922194143/b001/exe/test
args = haha
args = hehe
从上面可以看到接收到的参数有3个,但我们只传了2个,第一个参数是与文件名称相关的参数
1.2 变量类型
1.2.1 生成整型随机数字
package main
import (
"fmt"
"math/rand"
)
func main() {
randInt := rand.Int()
fmt.Println("randInt = ", randInt)
randFloat := rand.Float64()
fmt.Println("randFloat = ", randFloat)
}
结果:
randInt = 5577006791947779410
randFloat = 0.9405090880450124
1.2.2 同时声明多个变量
同时声明多个变量使用var ()
package main
import (
"fmt"
)
func main(){
var (
a string
b int
c bool
)
a = "adb"
b = 124
c = true
fmt.Println("a = ",a)
fmt.Println("b = ",b)
fmt.Println("c = ",c)
}
结果:
a = adb
b = 124
c = true
1.3 常量
1.3.1 同时声明多个常量
package main
import (
"fmt"
)
func main(){
const (
a = true
b = 23332
c = "233"
)
fmt.Println("a = ",a)
fmt.Println("b = ",b)
fmt.Println("c = ",c)
}
结果:
a = true
b = 23332
c = 233
1.3.2 iota
iota 在 const关键字出现时将被重置为 0,const 中每新增一行常量声明将使 iota 计数一次,如下所示:
package main
import (
"fmt"
)
func main(){
const (
a = iota
b
c
)
fmt.Println("a = ", a)
fmt.Println("b = ", b)
fmt.Println("c = ", c)
}
结果:
a = 0
b = 1
c = 2
1.4 时间操作
1.4.1 获取当前时间点小时
package main
import (
"fmt"
"time"
)
func main(){
t := time.Now().Hour()
fmt.Println("t = ", t)
}
结果:
t = 11
1.4.2 时间格式转换
package main
import (
"fmt"
"time"
)
func main(){
t := FormatTime(time.Now())
fmt.Println("t = ", t)
}
func FormatTime(timestamp time.Time) string {
format := "2006-01-02 15:04:05"
return timestamp.Format(format)
}
结果:
t = 2022-06-07 10:11:28
1.4.3 字符串转时间
package main
import (
"fmt"
"time"
)
func main() {
timeStr := "2022-09-16 15:00:00"
format := "2006-01-02 15:04:05"
t, _ := time.ParseInLocation(format, timeStr, time.Local)
fmt.Println("t = ", t)
}
结果:
t = 2022-09-16 15:00:00 +0800 CST
1.4.4 time.Since()
time.Since()获取相对某个时间过去了多少秒,如下所示:
package main
import (
"fmt"
"time"
)
func main() {
startTime := time.Now()
time.Sleep(10 * time.Second)
sinceTime := time.Since(startTime)
fmt.Println("sinceTime = ", sinceTime)
}
结果
sinceTime = 10.002925254s