从零开始学习Go语言(一)

文章目录

    • 一、Go环境搭建
      • (一)、Go编程语言环境安装
      • (二)、IDE安装
    • 二、Go语言结构
      • (一)、包声明
      • (二)、引入包
      • (三)、函数
      • (四)、变量
        • 1、布尔类型(boolean)
        • 2、数字类型(number)
        • 3、字符串类型(string)
        • 4、派生类型
      • (五)、变量声明
        • 1、指定类型
        • 2、自动判断类型
        • 3、忽略var
      • (六)、语句 & 表达式
      • (七)、注释
      • (八)、值类型和引用类型
      • (九)、语言常量

最近并行学习计算机语言python和Go,同样写学习笔记来记录一下我的学习历程。还是使用菜鸟(我)教程来引导我进入的入坑之旅。

计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。
除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。

Go 语言最主要的特性:

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

一、Go环境搭建

(一)、Go编程语言环境安装

下载地址:(教程),选择适合自己系统的安装包进行下载。
从零开始学习Go语言(一)_第1张图片

(二)、IDE安装

我选择用GoLand作为编写Go语言的IDE,下载和破解方法,亲测有效。配置完之后用下面这段程序测试一下,正常输出Hello,world即完成了环境的搭建。

package main
import "fmt"
func main()  {//注意{ 不能在单独的行上
fmt.Println("Hello,world")
}

函数执行可以在这个IDE或者是CMD。
IDE里面的话我觉得会更好,它的界面如下。
从零开始学习Go语言(一)_第2张图片

CMD界面如下。
从零开始学习Go语言(一)_第3张图片

二、Go语言结构

(一)、包声明

个人觉得Go语言和面向对象语言诸如Java、Python很像呀,是因为它本身就是这类语言吧。

package main定义了包名,它表示一个可独立执行的程序,每个Go应用程序都包含一个名为 main的包。

(二)、引入包

import “fmt” 引入了包,告诉Go编译器该应用程序使用fmt包(包括函数等),fmt包规定了格式化输入输出的函数 。
它可以同时引入,例如下面的例子。

import (     
"fmt"    
"math"     
"os"     
"runtime"     
"time"
)

(三)、函数

func main() 效果如void main(),它是程序开始的地方(梦开始的地方)。如果有init()函数则先执行它。(就是说它的初始化程序和main是独立的程序啦?)
下面的fmt.Println就是调用包中的格式化输出函数Println()(是不是和arduino很像捏!)

(四)、变量

Go中变量声明是先写变量名,再写类型名。详细的变量列表

1、布尔类型(boolean)

true/false

e.g. var fate bool = false(记住不需要加分号哦)
2、数字类型(number)

整型int、uint8、uint16、int16等,浮点型float32和float64,复数complex64和
complex128,其中位的运算采用补码。

e.g. var num int = 20190705
3、字符串类型(string)

字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。

字符串连接:两个字符串直接相加 e.g. “a”+“b”

4、派生类型
  • 指针类型(Pointer)
  • 数组类型(array)
  • 结构体类型(Struct)
  • Channel类型
  • 函数类型
  • 切片类型
  • 接口类型(Interface)
  • Map类型

(五)、变量声明

1、指定类型

var [变量名] [变量类型] //变量无初始化自动分配为默认值,
数值类型为0,
布尔类型为false,
字符串类型为空字符串""。
以下类型为nil:

var a *intvar a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口

多变量声明:

var [arg1],[arg2],[arg3] [type] 
[arg1],[arg2],[arg3] = [value1],[value2],[value3]
2、自动判断类型

var [变量名] = [已经声明了的变量名]
类似于C++的auto(吗)

多变量声明:

var [arg1],[arg2],[arg3] = [value1],[value2],[value3]

var(
    [arg1] [type1]
    [arg2] [type2]
)
3、忽略var

使用 ‘:=’
e.g.

[新变量名] := [value]
[已声明的变量名],[新变量名] := [value1],[value2]

(六)、语句 & 表达式

Go程序由多个标记组成,可以是关键字(key word)、标识符(identifier)、常量(constant)、字符串(character string)、符号(symbol)组成。例如上面的程序fmt.Println(“Hello,world”)就是由6个标记组成。

Go程序行与行之间不需要像C语言那样用分号’;'来区别句子的结束,这些工作都有Go编译器完成。

(七)、注释

注释方式和C相似,分别有

/* 多行注释 */
//单行注释

(八)、值类型和引用类型

Go语言中int、float、bool和string等基本类型属于值类型,它们直接指向存在内存中的值。
所以Go语言的赋值操作,就是在内存中将值进行拷贝。而引用类型存储的是它的值所在的地址,或内存地址中第一个字的位置,该内存地址成为指针。

(九)、语言常量

定义了标识符const的变量不会被改变,类型可以是布尔型、数字型(整数型、浮点型和复数)和字符串型的任一种。
它的使用示例如下。

const arg1,arg2 = value1,value2//多个变量同时声明,类型和valuex一一对应
const(
apple = 1 
banana = 2
cheey = 3
)//枚举

另外还有一个特殊的常量,它的标识符为iota,它是可以被编译器修改的常量,它相当于一个const语句块的行索引,它可以用作枚举。

const(
a = iota//a=0
b = iota//b=1
)
const(
c = itoa//c=0
d//d=1
e = itoa//e=2
f = "hello"//f="hello"
g//g="hello",当变量没被赋值就按照上一个变量被赋的值来赋值
)

你可能感兴趣的:(Go,Go)