Go语言学习

· · 1487 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一 应用场景描述

聽为什么想着要学习一下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/


本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1783291


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:

查看原文:Go语言学习

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1487 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传