Go语言学习
· · 1978 次点击 · · 开始浏览一 应用场景描述
聽为什么想着要学习一下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.切片
参考资料:
本文出自 "Linux SA John" 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1783291
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
一 应用场景描述
聽为什么想着要学习一下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.切片
参考资料:
本文出自 "Linux SA John" 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1783291