一 应用场景描述
为什么想着要学习一下Go语言?现在越来越多有名的开源项目都是使用Go语言开发的,所以了解一下Go语言的基础知识还是很有必要的。平时的工作中主要使用Shell和Python来编写运维脚本。之前已经看过无数次关于Go语言的介绍和分享帖子了。对于Go语言这种性能仅次于C和C++的后起之秀,同时又比Python这种胶水语言性能提高不少。如果以后工作中如果有需要处理性能方面的问题就可以使用Go来编写。
二 使用Go语言编写的项目
目前比较出名的使用Go语言编写的项目有:
Docker 开源容器
Open Falcon 小米的开源监控工具
Codis 豌豆荚的Redis解决方案,Codis的好几个组件都是用Go语言编写的
Ected 和ZooKeeper同类工具
Kubernetes 谷歌开源的容器调度工具
三 Go语言基础学习
测试Go语言程序之前先安装Go语言。
CentOS 使用yum -y install go安装
1.打印Hello World!
package main
import "fmt"
func main(){
fmt.Println("hello world!")
}
# go run hello-world.go
hello world!
# go build hello-world.go
# ls
hello-world hello-world.go
# ./hello-world
hello world!
2.赋值类型
package main
import "fmt"
func main() {
fmt.Println("go" + "lang")
fmt.Println("1+1 =",1+1)
fmt.Println("7.0/3.0 =",7.0/3.0)
fmt.Println(true&&false)
fmt.Println(true||false)
fmt.Println(!true)
}
# go run values.go
golang
1+1 = 2
7.0/3.0 = 2.3333333333333335
false
true
false
3.变量
package main
import "fmt"
func main() {
var a string = "initial"
fmt.Println(a)
var b,c int = 1,2
fmt.Println(b,c)
var d=true
fmt.Println(d)
var e int
fmt.Println(e)
f := "short"
fmt.Println(f)
}
# go run variable.go
initial
1 2
true
0
short
4.常量
package main
import "fmt"
import "math"
const s string = "constant"
func main() {
fmt.Println(s)
const n = 500000000
const d = 3e20 /n
fmt.Println(d)
fmt.Println(int64(d))
fmt.Println(math.Sin(n))
}
go run constant.go
constant
6e+11
600000000000
-0.2847040732381611
5.for循环
for语句是Go语言唯一的循环语句
package main
import "fmt"
func main() {
i :=1
for i <= 3 {
fmt.Println(i)
i = i+1
}
for j :=7;j <= 9; j++ {
fmt.Println(j)
}
for {
fmt.Println("loop")
break
}
}
# go run for.go
1
2
3
7
8
9
loop
6.if/else语句
package main
import "fmt"
func main() {
if 7%2 == 0 {
fmt.Println("7 is even")
}else{
fmt.Println("7 is odd")
}
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
if num := 9;num < 0 {
fmt.Println(num,"is negative")
}else if num < 10 {
fmt.Println(num,"has 1 digit")
}else {
fmt.Println(num,"has multiple digits")
}
}
这里注意else语句的语句不能写成
}
else {
一定要写成 }else { 这种形式
# go run if.go
7 is odd
8 is divisible by 4
9 has 1 digit
7.switch语句
package main
import "fmt"
import "time"
func main() {
i :=2
fmt.Print("write",i," as ")
switch i {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
}
switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("it's the weekend")
default:
fmt.Println("it's a weekday")
}
t := time.Now()
switch{
case t.Hour() < 12:
fmt.Println("it's before noon")
default:
fmt.Println("it's after noon")
}
}
# go run switch.go
write2 as two
it's a weekday
it's after noon
8.数组
package main
import "fmt"
func main() {
var a [5]int
fmt.Println("emp:",a)
a[4] = 100
fmt.Println("set:",a)
fmt.Println("get:",a[4])
b := [5]int{1,2,3,4,5}
fmt.Println("dc1:",b)
var twoD [2][3]int
for i :=0;i < 2;i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ",twoD)
}
# go run arrays.go
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
dc1: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
9.切片
参考资料:
https://gobyexample.com/
©著作权归作者所有:来自51CTO博客作者自由linux的原创作品,如需转载,请注明出处,否则将追究法律责任