手记

Go语言学习


一 应用场景描述

 为什么想着要学习一下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的原创作品,如需转载,请注明出处,否则将追究法律责任


1人推荐
随时随地看视频
慕课网APP