书接上回,上回说到了为什么要学习Go语言,今天我们来实际写一下,感受一下Go语言的精美之处。

环境搭建

安装和设置

Windows:

  1. Go安装包下载网址:https://golang.org/dl/
  2. 有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。
  3. 运行msi安装文件,千万不要在安装路径中出现中文,一路Next。
  4. 由于使用msi安装文件,Go语言的环境变量已经自动设置好了。

打开Windows中的命令提示符(cmd.exe)执行命令:

查看版本 go vresion

查看环境 go env

MacOs

方法一:官网下载安装包,比较快

方法二:brew install go

添加环境变量

  1. //编辑~/.bash_profile文件
  2. vim ~/.bash_profile
  3. //在~/.bash_profile文件中添加:
  4. export GOROOT=/usr/local/go
  5. export PATH=$PATH:$GOROOT/bin
  6. export PATH="/Users/teemo/go/bin:$PATH"
  7. //使配置生效
  8. localhost:~ zxy$ source ~/.bash_profile

Linux

wget $tar -xvf go1.16.1.linux-amd64.tar.gz

设置环境变量

  1. $vim /etc/profile
  2. 添加
  3. export GOROOT=/data/work/go
  4. export GOPATH=/data/work/gopath
  5. export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  6.  
  7. source /etc/profile
  8. go version

标准命令概述

Go语言中包含了大量用于处理Go语言代码的命令和工具。

其中,go命令就是最常用的一个,它有许多子命令。

这些子命令都拥有不同的功能,如下所示:

  • build:用于编译给定的代码包或Go语言源码文件及其依赖包。
  • clean:用于清除执行其他go命令后遗留的目录和文件。
  • doc:用于执行godoc命令以打印指定代码包。
  • env:用于打印Go语言环境信息。
  • fix:用于执行go tool fix命令以修正给定代码包的源码文件中包含的过时语法和代码调用。
  • fmt:用于执行gofmt命令以格式化给定代码包中的源码文件。
  • get:用于下载和安装给定代码包及其依赖包(提前安装git或hg)。
  • list:用于显示给定代码包的信息。
  • run:用于编译并运行给定的命令源码文件。
  • install:编译包文件并编译整个程序。
  • test:用于测试给定的代码包。
  • tool:用于运行Go语言的特殊工具。
  • version:用于显示当前安装的Go语言的版本信息。

选择编辑器

  • 首选GoLand,破解问题自行百度或私信我,也可以氪金。
  • 其次VSCode。
  • 剩余编辑器首选vim,其他编辑器哪个顺手用哪个。

Goland配置: https://blog.csdn.net/zxy_666/article/details/80182688

主要是go mod中添加代理:GOPROXY=https://goproxy.io

go mod就是包管理工具,加代理是为了下载海外包更快。

hello world

每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。包即目录。

要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。

Go语言的main()函数不能带参数,也不能定义返回值。

在包声明之后,是一系列的import语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。

  1. // 定义包, 一个程序通常只有一个main包,作为程序的入口
  2. package main
  3. // 导入包,这里导入fmt包
  4. import "fmt"
  5. // 通过func关键字定义函数
  6. // 这里定义的是程序的入口函数main, 程序从这个函数开始执行
  7. func main() {
  8. // 调用fmt包的Println函数,打印一个字符串。
  9. fmt.Println("Hello, world")
  10. }

可以看出,和C的风格真的很像很像。

  1. #include <stdio.h>
  2. //导入包
  3. //主函数
  4. int main()
  5. {
  6. //打印
  7. printf("Hello World");
  8. return 0;
  9. }

不同的是,GO的创始人就是喜欢换行的括号风格,如果你像C这样使用花括号,则会报语法错误。这也许就是程序员的浪漫吧。

我们也可以试试命令编译执行该程序。

go build main.go

或者直接运行, 不编译生成可执行文件。

go run main.go

【Go语言学习笔记】hello world的更多相关文章

  1. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  2. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  3. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

  4. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  5. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  6. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  7. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  8. Go语言学习笔记十一: 切片(slice)

    Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...

  9. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  10. Go语言学习笔记九: 指针

    Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...

随机推荐

  1. disruptor笔记之二:Disruptor类分析

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. PHP 合并2个链表

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. <?php class ListNode{ var $val; var $next = NULL; ...

  3. python学习笔记(三)-列表&字典

    列表: 一.列表操作"""Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一 ...

  4. prometheus+grafana实现服务监控

    一.安装prometheus: 下载相应的版本 :https://prometheus.io/download/ 解压: Linux:tar -zxvf XXX.tar.gz windows:直接下载 ...

  5. AT3611-Tree MST【点分治,最小生成树】

    正题 题目链接:https://www.luogu.com.cn/problem/AT3611 题目大意 给出\(n\)个点的一棵树. 现在有一张完全图,两个点之间的边权为\(w_x+w_y+dis( ...

  6. Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...

  7. Unity——对象池管理

    Unity对象池管理 一.Demo展示 二.逻辑 在游戏中会出现大量重复的物体需要频繁的创建和销毁:比如子弹,敌人,成就列表的格子等: 频繁的创建删除物体会造成很大的开销,像这种大量创建重复且非持续性 ...

  8. TWAIN-v2.4-说明文档翻译(2)技术概览

    技术概览 Technical Overview TWAIN架构(TWAIN Architecture) 数据交互的实现在TWAIN中由三类软件元素共同工作完成:应用程序(the application ...

  9. 开发数学系统时,需要掌握的几个基于Web的数学框架

    在做数学系统时,经常要和数学公式打交道,这里介绍几个常用的基于Web的数学处理软件. 数学系统主要包括三类:(1)数学公式的显示,也就是如何使用web显示复杂的数学公式. (2)图像制作,例如长方形, ...

  10. Vue3学习(二)之集成Ant Design Vue

    一.集成Ant Design Vue npm install ant-design-vue@2.0.0-rc.3 --save 兼容性 Ant Design Vue 2.x 支持所有的现代浏览器. 如 ...