超级苦工
阅读 136
Go by Example 中文版(实例学习 Go 语言)

前言:

Go by Example 是一个实践性的教程,通过带注释的程序实例去学习 Go 语言。希望本文能给你在学习 Go 语言的过程中提供思路和源码方面的参考,请按照教程在线完成代码并理解每行代码。

说明:本文截选自实验楼教程【Go by Example 中文版】,教程总共21节内容,本文截选自前两节;

开发第一个Go程序 Hello World

1. 编写代码

打开桌面上的gedit,输入以下代码:

package main
import "fmt"
func main() {
    fmt.Println("hello world")
}

将代码文件保存为/home/shiyanlou/hello-world.go

2. 运行程序

打开桌面上的Xfce终端,输入下面的命令查看输出。

$ go run hello-world.go
image.png
image.png

有时候我们想将我们的程序编译成二进制文件。我们可以通过 go build 命来达到目的。

$ go build hello-world.go
$ ls
hello-world hello-world.go

然后我们可以直接运行这个二进制文件。

$ ./hello-world
hello world

代码实例

Go 拥有各值类型,包括字符串,整形,浮点型,布尔型等。下面是一些基本的例子。

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)
}

将代码保存为/home/shiyanlou/values.go文件。

运行程序

打开桌面上的Xfce终端,输入下面的命令查看输出:

$ go run values.go
image.png
image.png

变量

代码实例

在 Go 中,变量 被显式声明,并被编译器所用来检查函数调用时的类型正确性

package main

import "fmt"

func main() {

    // `var` 声明 1 个或者多个变量。
    var a string = "initial"
    fmt.Println(a)

    // 你可以申明一次性声明多个变量。
    var b, c int = 1, 2
    fmt.Println(b, c)

    // Go 将自动推断已经初始化的变量类型。
    var d = true
    fmt.Println(d)

    // 声明变量且没有给出对应的初始值时,变量将会初始化为
    // _零值_ 。例如,一个 `int` 的零值是 `0`。
    var e int
    fmt.Println(e)

    // `:=` 语句是申明并初始化变量的简写,例如
    // 这个例子中的 `var f string = "short"`。
    f := "short"
    fmt.Println(f)
}

将代码保存为/home/shiyanlou/variables.go文件。

运行程序

打开桌面上的Xfce终端,输入下面的命令查看输出:

$ go run variables.go
image.png
image.png

常量

代码实例

Go 支持字符、字符串、布尔和数值 常量 。

// Go 支持字符、字符串、布尔和数值 _常量_ 。
package main

import "fmt"
import "math"

// `const` 用于声明一个常量。
const s string = "constant"

func main() {
    fmt.Println(s)

    // `const` 语句可以出现在任何 `var` 语句可以出现
    // 的地方
    const n = 500000000

    // 常数表达式可以执行任意精度的运算
    const d = 3e20 / n
    fmt.Println(d)

    // 数值型常量是没有确定的类型的,直到它们被给定了一个
    // 类型,比如说一次显示的类型转化。
    fmt.Println(int64(d))

    // 当上下文需要时,一个数可以被给定一个类型,比如
    // 变量赋值或者函数调用。举个例子,这里的 `math.Sin`
    // 函数需要一个 `float64` 的参数。
    fmt.Println(math.Sin(n))
}

运行程序

打开桌面上的Xfce终端,输入下面的命令查看输出:

$ go run constant.go 
image.png
image.png

最后:

如果你想要查看完整教程,点击【Go by Example 中文版】即可,该教程的实验列表如下:

  • 第1节 课程说明与学习方法
  • 第2节 值,变量,常量
  • 第3节 For循环,if/else分支,分支结构
  • 第4节 数组,切片,关联数组,Range遍历
  • 第5节 函数,多返回值,变参函数
  • 第6节 闭包,递归
  • 第7节 指针,结构体,方法,接口
  • 第8节 错误处理,协程
  • 第9节 通道,通道缓冲,通道同步,通道方向,通道选择器
  • 第10节 超时处理,非阻塞通道操作,通道的关闭,通道遍历
  • 第11节 定时器,打点器,工作池,速率限制,原子计数器
  • 第12节 互斥锁,Go状态协程
  • 第13节 排序,使用函数自定义排序,Panic,Defer
  • 第14节 组合函数,字符串函数,字符串格式化
  • 第15节 正则表达式,JSON
  • 第16节 时间,时间戳,时间的格式化和解析
  • 第17节 随机数,数字解析,URL解析
  • 第18节 SHA1散列,Base64编码
  • 第19节 读文件,写文件,行过滤器
  • 第20节 命令行参数,命令行标志,环境变量
  • 第21节 生成进程,执行进程,信号,退出
评论
相关推荐
asdfasfdfd

asdfasdfsafd...

asdfafsdfsad

function sdf(){ echo "sdffsdfds"; }...

阿萨德飞

sdflkllsfdkj nihao...

【Golang+mysql】记一次mysql数据库迁移(一)

【Golang+mysql】记一次mysql数据库迁移(一) 文章地址:https://github.com/stayfoo/stayfoo-hub 一、准备 目标: 腾讯云 CVM 自建 mysql...

米粒社区系统什么部署?

发现现在一些功能还没开发或上线,不过感觉这个社区系统很强大,期待期待...

不错的网站

ceshi ceshi...

[译]想成为一个出色的Web工程师?学Golang而非Node.js。

原文: https://medium.com/codezillas/want-to-be-a-best-web-developer-learn-golang-not-node-js-69b4166d1...

跟我一起学习gRPC

扫描二维码,点击源码阅读菜单,跟我一起学习gRPC...

这个项目还会更新吗

这个项目github上1年多没有更新了...

golang123报错问题

报图上错误,怎么解...

【开源】gnet: 一个轻量级且高性能的 Golang 网络库

Github 主页 https://github.com/panjf2000/gnet 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 epoll 和...

t2

tttttttttttttttttttttttt...

test

123456789...

读 "优雅关闭的 Go Web 服务器"

读 "优雅关闭的 Go Web 服务器" GitHub 仓库:https://github.com/stayfoo/stayfoo-hub 文章《优雅的关闭 Go Web 服务器》...

golang123监控安装配置

有问题同学将golang123的源码中的statsD安装配置成功的,分享一下配置过程呗。...

Golang Modules官方包管理

1 设置环境变量 GO111MODULE=auto2 初始化项目 go mod init my_project3 针对国外无法访问的包设置代理 GOPROXY=https://goproxy.io其他...

猎豹移动,直播业务,招聘 Golang 工程师【北京】

我的微信是 legenove, 邮箱是 liuguoyang@cmcm.com 我是这个团队的 leader,直接给自己团队招聘。 职位要求: 1.熟练掌握 Golang 语言,并有 2 年以上中大型...

部署后登录 Request failed with status code 404

Request failed with status code 404 怎么解决...

[深圳 梦享网路 ] Golang开发工程师招聘

岗位介绍 ** 如有意向:请联系: 陈小姐:TEL:18620870779 邮箱:chenpeiwen@clickwifi.net ** 办公地点:深圳市南山区软件产业基地科园路中科纳能大厦A栋403...

golang + qt5 开发的百度网盘不限速客户端

百度网不限速客户端,使用golang + qt5 开发,跨平台。代码注释详细,并有附有开发文档,gopher们快来支持下吧 官网: https://github.com/peterq/pan-ligh...