每一种编程语言,从读一本好书开始

每一种编程语言,也从Helloworld开始


1. 环境准备

1.1 安装golang

在Ubuntu下,直接输入命令可以安装最新版本:

  1. $ sudo apt-get install golang

如果是其他Linux系统,请查找相应安装命令,或者windows下用安装包直接安装;

1.2 环境配置并检查env

已经2020了,建议直接使用go mod来管理代码, 配置方法如下, 在bash中执行:

  1. 1 # 启动go module模式
  2. 2 go env -w GO111MODULE=on
  3. 3 # 使用国内代理,防止无法下载一些外网墙掉的包
  4. 4 go env -w GOPROXY=http://goproxy.cn,direct
  5. 5 # 国内的码云可以直接访问不走代理
  6. 6 go env -w GOPRIVATE=gitee.com

配置完成后, 可以见检查一下相关参数是否正确, 下面的做参考:

  1. $ go env
  2. GO111MODULE="on"
  3. GOARCH="amd64"
  4. GOBIN="/home/neo/go-pro/bin"
  5. GOCACHE="/home/neo/.cache/go-build"
  6. GOENV="/home/neo/.config/go/env"
  7. GOEXE=""
  8. GOFLAGS=""
  9. GOHOSTARCH="amd64"
  10. GOHOSTOS="linux"
  11. GONOPROXY="gitee.com"
  12. GONOSUMDB="gitee.com"
  13. GOOS="linux"
  14. GOPATH="/home/neo/go-pro"
  15. GOPRIVATE="gitee.com"
  16. GOPROXY="https://goproxy.cn,direct"
  17. GOROOT="/usr/lib/go-1.13"
  18. GOSUMDB="sum.golang.org"
  19. GOTMPDIR=""
  20. GOTOOLDIR="/usr/lib/go-1.13/pkg/tool/linux_amd64"
  21. GCCGO="gccgo"
  22. AR="ar"
  23. CC="gcc"
  24. CXX="g++"
  25. CGO_ENABLED="1"
  26. GOMOD="/dev/null"
  27. CGO_CFLAGS="-g -O2"
  28. CGO_CPPFLAGS=""
  29. CGO_CXXFLAGS="-g -O2"
  30. CGO_FFLAGS="-g -O2"
  31. CGO_LDFLAGS="-g -O2"
  32. PKG_CONFIG="pkg-config"
  33. GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build476496502=/tmp/go-build -gno-record-gcc-switches"

2. 手撕打招呼代码

2.1 建立接口文件 conversation.go

打开你最爱的编辑器, 输入打招呼函数 Conversation 内容,如下:

  1. 1 package main
  2. 2
  3. 3 import (
  4. 4 "fmt"
  5. 5 )
  6. 6
  7. 7 // Conversation 触发一段对话, 询问你的名字并回答
  8. 8 func Conversation() {
  9. 9 fmt.Println("[下面是一段对话]")
  10. 10 fmt.Println("Hello, I'm Go, what's your name?")
  11. 11 name := ""
  12. 12 _, err := fmt.Scanln(&name)
  13. 13 if err != nil {
  14. 14 fmt.Println("对不起, error found:", err)
  15. 15 return
  16. 16 }
  17. 17 fmt.Println("很高兴认识你,", name)
  18. 18 }

2.2 建立主函数文件 hello-world.go

继续使用你最心爱的编辑器, 写入主文件 hello-world.go , main 函数内容如下:

  1. 1 package main
  2. 2
  3. 3 import "fmt"
  4. 4
  5. 5 func main() {
  6. 6 fmt.Println("Hello, 世界!")
  7. 7 Conversation()
  8. 8 }

这里只是简单调用了一下前面的文件中的Conversation函数;

2.3 手撕代码要go fmt

在存放上面两个文件的路径下, 直接执行go fmt即可, 被格式化的文件会输出文件名, 比如下面的例子,故意让Conversation函数调用点没有对齐代码,被修复了;

2.4 直接go run 运行第一个程序吧


3. 使用库上的代码

3.1 go get获取代码

本文的示例代码已经托管在码云平台, 大家可以直接取用; 在本地建立一个temp目录来进行实验。

当前文章代码目录为: gitee.com/NeoWorkShop/go-basics-study/ch01-say-hello 

  1. neo@neo-hw-matebookxpro:~/go-pro/temp
  2. $ go get -v gitee.com/NeoWorkShop/go-basics-study/ch01-say-hello
  3. get "gitee.com/NeoWorkShop/go-basics-study": found meta tag get.metaImport{Prefix:"gitee.com/NeoWorkShop/go-basics-study", VCS:"git", RepoRoot:"https://gitee.com/NeoWorkShop/go-basics-study.git"} at //gitee.com/NeoWorkShop/go-basics-study?go-get=1
  4. get "gitee.com/NeoWorkShop": found meta tag get.metaImport{Prefix:"gitee.com/NeoWorkShop", VCS:"git", RepoRoot:"https://gitee.com/NeoWorkShop"} at //gitee.com/NeoWorkShop?go-get=1
  5. go: extracting gitee.com/NeoWorkShop/go-basics-study v1.1.1

获取到的文件,默认存放在 $GOPATH/pkg/mod 下, 结构如下:

  1. $ tree ../pkg/mod/gitee.com/\!neo\!work\!shop/go-basics-study@v1.1.1/
  2. ../pkg/mod/gitee.com/!neo!work!shop/go-basics-study@v1.1.1/
  3. ├── ch01-say-hello
  4.    ├── conversation.go
  5.    └── hello-world.go
  6. ├── go.mod
  7. ├── LICENSE
  8. └── README.md

两个文件正是步骤2中的代码;

3.2 go build构建小程序

直接使用标准的go build命令,可以在当前目录下生成可执行程序 ch01-say-hello ;

  1. go build gitee.com/NeoWorkShop/go-basics-study/ch01-say-hello

运行结果如下:


福利:

[Go语言圣经(中文版)] http://books.studygolang.com/gopl-zh/

Go语言基础知识01-用Go打个招呼的更多相关文章

  1. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  2. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  3. Golang 入门系列(三)Go语言基础知识汇总

    前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...

  4. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  5. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  6. C语言基础知识-程序流程结构

    C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...

  7. C语言基础知识-运算符与表达式

    C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...

  8. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...

  9. AI-图像基础知识-01

        目前人工智能Artificial Intelligence主要分为两大分支: 计算机视常见:Computer Vision,简称CV   CV主要是研究如何让机器看懂世界的一种技术,通过各种光 ...

  10. PHP语言基础知识

    目录 前言 第一章 PHP语言学习介绍 1.1 PHP部署安装环境 1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍 2.2 PHP常量变量介绍 2.2.1 PHP变 ...

随机推荐

  1. Fliptile(POJ 3279)

    原题如下: Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16494   Accepted: 6025 D ...

  2. IT人35岁危机:到底是因为爱还是责任?

    互联网蚕食世界,未来属于IT人. 这是属于互联网的时代,每个人都是网络的弄潮儿,由于网络越来越被需要,互联网IT行业被推上了较高的位置,这也导致IT行业的就业环境火热,越来越多的人被IT行业广阔的发展 ...

  3. charles安装破解步骤

    访问该地址https://www.zzzmode.com/mytools/charles/ 安装——生成破解工具charles.jar——替换

  4. Robotframework自动化2-Windows环境搭建

    前言 上节主要介绍了部分的robotframework搭建,如果想运行APP的话,还需要进一步配置环境. 需要安装的软件 1.Android-sdk-windows 2.JDK 3.Appium-de ...

  5. 初等函数——幂函数(Power Function)

    幂函数(Power function)是形如f(x)=xa的函数,a∈R是实数.即以底数为自变量,幂为因变量,指数为常数的函数称为幂函数. 性质 幂函数的图像一定会出现在第一象限内,一定不会出现在第四 ...

  6. u深度win10pe装机版制作教程

    一款功能强大的u盘启动盘要怎么制作是非常重要的,对于大多数用户来说其中操作步骤并不熟悉.这里小编带来时下最新的u深度win10pe装机版制作教程,教你如何快速的进行u深度U盘的制作,下面就跟小编一起进 ...

  7. 我告诉你一个 AtomicInteger 的惊天大秘密

    i++ 不是线程安全的操作,因为它不是一个原子性操作. 那么,如果我想要达到类似 i++ 的这种效果,我应该使用哪些集合或者说工具类呢? 在 JDK1.5 之前,为了确保在多线程下对某基本数据类型或者 ...

  8. Mybatis快速逆向生成代码

    先下载生成器的文件, 并在eclipse或者IDEA里面打开这个工程 热乎乎的链接 然后配置一下 选择你需要生成的数据的ip和端口 点击运行入口函数 运行成功 接着在浏览器输入localhost: 这 ...

  9. Flutter学习二之Dart语言介绍

    上次我记录了Flutter的环境搭建,这次来简单记录一下Drat语言,Flutter是 Google推出并开源的移动应用开发框架,开发语言是Dart,那么Dart语言和其他的语言在语法上有上面区别呢, ...

  10. 文本编辑-vi

    命令行模式: 底行模式: