GO 语言入门(一)

本文写于 2020 年 1 月 18 日

Go 由 Google 工程师 Robert Griesemer,Rob Pike 和 Ken Thompson 设计的一门编程语言,第一个版本于 2012 年 3 月作为开源发布。

它是一种静态类型并发型编译语言,并具有垃圾回收功能。

Go 语言支持交叉编译,即可在 Windows 上编译 Linux 版本、Mac 上编译 Windows 版本。

Go 的语法接近 C 语言。与 C++相比,Go 并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片(Slice) 型、并发、管道、垃圾回收功能、接口等特性的语言级支持。

安装与配置

首先于官网下载对应系统的 Go,并配置环境变量。

环境变量的配置主要有两点:GOPATHGOROOT

GOROOT 是 Go 的路径。而 Go 中的工作空间由环境变量「GOPATH」定义。Go 希望你写的任何代码都将写在此工作区内。

在新版本中,GOPATH 可以有多个,加上 GO111MODULE 的加入,让初学者超级摸不着头脑。

因此我们可以先不管 GO111MODULE 和多个 GOPATH 一说,只需要建立一个 GOPATH 用作学习即可。

export PATH="PATH-TO-YOUR-GO/bin:$PATH"
export GOPATH="自定义一个文件夹,文件夹下新建 src bin pkg 三个文件夹"
export PATH="$GOPATH/bin:$PATH"

模块化

Go 的模块化声明类似于 Java,都是以 package xxx 声明的。

项目必须拥有一个入口文件,声明 packagemain

// main.go
package main

与 Java 的万物皆对象类似,我们需要引入一些包实现具体的功能。例如控制台输出:

// main.go
package main import "fmt" func main(){
fmt.Println("Hello World!")
}

fmt 是 Go 中的内置包,它实现了格式化 I/O 的功能。

如果需要引入多个包时,可以多次书写 import,或者是分行写:

import "a"
import "b"
import "c"
// 或者是
import (
"a"
"b"
"c"
)

func 是 go 的函数生命语句,main 则是主函数,是 go 运行时第一个执行的函数。

在函数外,go 只能执行少量的语句,例如声明变量、声明 package、import 包……

运行 go

我们可以通过两种方式运行 Go 命令,run 与 build。

go run main.go 可以直接运行 Go 程序。

但 Go 是一种编译语言,所以我们首先需要在执行之前编译它。

上面这种方法并非没有编译,只是帮我们省略了编译而已。

go build main.go 会帮我们编译代码,创建一个二进制可执行文件 main——在 Windows 上创建的应该是 main.exe。我们运行该可执行文件,即可运行 Go 程序。

变量声明

Go 是一种静态类型的语言,这意味着在声明变量时我们就需要明确变量的类型。

var 声明

一般一个变量的定义如下:

var a int

这样我们就定义好了一个 int 类型的变量 a。默认 a 会被赋值成 0。

自动类型推断

使用以下语法可以初始化改变变量的值:

var a = 1

这里我们没有制定变量 a 的类型,但是在我们给它初始化为 1 时,它就自动被定义成了 int 类型的变量。

:= 操作

或者我们认为 var 过于麻烦,就可以用 := 来进行更简单的定义与赋值。

message := "hello world"

声明多个变量

声明多个变量:

var (
a int
b string
c = "hello"
)

常量

常量与变量的声明方法类似,除了声明方法为 const

const pi = 3.14

与变量的区别在于,常量一旦声明就无法改变

(完)

GO 语言入门(一)的更多相关文章

  1. 踢爆IT劣书出版黑幕——由清华大学出版社之《C语言入门很简单》想到的(1)

    1.前言与作者 首先声明,我是由于非常偶然的机会获得<C语言入门很简单>这本书的,绝对不是买的.买这种书实在丢不起那人. 去年这书刚出版时,在CU论坛举行试读推广,我当时随口说了几句(没说 ...

  2. 我为什么反对推荐新人编程C/C++语言入门?

    虽然我接触编程以及计算机时间比较早,但是正式打算转入程序员这个行当差不多是大学第四年的事情 从03年接触计算机,07年开始接触计算机编程, 期间接触过的技术包括 缓冲区溢出(看高手写的shellcod ...

  3. 《C语言入门1.2.3—一个老鸟的C语言学习心得》—清华大学出版社炮制的又一本劣书及伪书

    <C语言入门1.2.3—一个老鸟的C语言学习心得>—清华大学出版社炮制的又一本劣书及伪书 [薛非评] 区区15页,有80多个错误. 最严重的有: 通篇完全是C++代码,根本不是C语言代码. ...

  4. c语言入门教程 / c语言入门经典书籍

    用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...

  5. 【转】c语言入门教程 / c语言入门经典书籍

    用C语言开始编写代码 初级:C语言入门必备 (以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言 ...

  6. Swift语言入门之旅

    Swift语言入门之旅  学习一门新的计算机语言,传统来说都是从编写一个在屏幕上打印"Hello world"的程序開始的.那在 Swift,我们使用一句话来实现它: printl ...

  7. 《Ruby语言入门教程v1.0》学习笔记-01

    <Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...

  8. 【南阳OJ分类之语言入门】80题题目+AC代码汇总

    小技巧:本文之前由csdn自动生成了一个目录,不必下拉一个一个去找,可通过目录标题直接定位. 本文转载自本人的csdn博客,复制过来的,排版就不弄了,欢迎转载. 声明: 题目部分皆为南阳OJ题目. 代 ...

  9. C语言入门(21)——使用DBG对C语言进行调试

    C语言入门(21)--使用DBG对C语言进行调试 程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪.到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码 ...

  10. C语言入门(7)——自定义函数

    C源程序是由函数组成的.虽然在C语言入门系列前面几篇的程序中大都只有一个主函数main(),但实用程序往往由多个函数组成.函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能.C语言中的函数相 ...

随机推荐

  1. 学习Python(一)

    一.Python的基础 1.Python是怎样的语言? 2.Python的安装 Linux安装(python3) yum install -y make zlib zlib-devel gcc-c++ ...

  2. 1、Jetson Nano 远程桌面XP问题

    jeston nano上网 方法3(最简单的方法) 最简单的方法真的特简单,用USB数据线连接主板的USB接口以及手机,打开手机的USB共享即可,若要使用静态IP,可在主板上修改配置文件,接口一般为u ...

  3. 【SpringBoot实战】核心配置和注解

    前言 SpringBoot核心配置在springboot中有非常重要的作用,我们可是使用核心配置文件进行一些基础功能的定义,属性值的注入等.springboot支持两种格式的核心配置文件,一种是pro ...

  4. 【二次元的CSS】—— 纯CSS3做的能换挡的电扇

    这次分享的电扇,和以往用css3画人物相比 多加了一点交互,就是电扇开关的地方,用到了一点点css3的 :checked +div 这个很少用到的选择器来实现的. GitHub传送门:https:// ...

  5. 小程序的初次遇见,使用mpvue搭建模板

    由于公司业务需求的需要,在这一周需要开发小程序,加急看了下小程序的文档,发现用其原生来编写程序不是很顺手,公司前端用的技术栈是vue, 询问了谷哥和度娘发现大部分推荐了 wepy和 mpvue,对比了 ...

  6. 有关placeholder在ie9中的一点折腾

    有关placeholder在ie9中的一点折腾. placeholder属性定义: placeholder 属性规定可描述输入字段预期值的简短的提示信息(比如:一个样本值或者预期格式的短描述). 问题 ...

  7. Android Studio安装问题

    安装问题可以参考:https://blog.csdn.net/y74364/article/details/96121530 但是gradle安装缓慢,需要FQ.有加速器FQ的可以开加速器安装,没有的 ...

  8. UML与面向对象程序设计原则

    [实验任务一]:UML复习 阅读教材第一章复习UML,回答下述问题: 面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明. 1.  关联关系 (1)  双向关联 (2)  单向关联 (3)  ...

  9. CentOS安装图形界面以及eclipse的安装

    图形界面的安装,以GNOME为例: 1.首先运行命令:yum grouplist 会显示可安装的包,可以自己选择安装. 2.运行  yum gruopinstall "GNOME" ...

  10. javascript回调地狱真的只能Promise来解决吗?js回调地狱,Promise。

    javascript的灵活在于函数可以当作函数的参数来传递,以及它的异步回调思想.但是这就带了一个很严重的问题,那就是回调次数过多,会影响代码结构,多层嵌套影响代码的可阅读性,也不便于书写. 举个例子 ...