3.GO语言学习

前言:配置go语言的环境

  • Linux:
  • Windows:

    关于环境配置的思考:安装Go,需要配置所谓的环境变量
    第一个:goroot是指go的语言环境的安装目录,一般自动安装好了,不需要改
    第二个:gopath是指go的工程目录,相当于c中的workspace工作空间,需要自己创建,目录下有src,pkg,bin三个子目录.
    第三个:panth将go的命令放入系统的环境变量目录下,作为小白根本不懂什么是环境变量.PATH的命令是全局命令,你在系统的任何地方,输入对象的命令,都有效.
    

1.基本语法

<1>. 创建于声明

*变量的声明 
 整形:
 数组:
 切片:
 结构体:
 接口:
 通道:      
*类型的声明
 结构体:
 接口:

注:给类型起别名:而且用别名的类型和用原始名字的类型是完全不同的,不能通用

<2>.数据类型

(1).值类型

整形,浮点型,字符串,数组,函数,结构体

(2).引用类型

切片,映射,接口,通道

关于数据类型的角度,在程序中所有一切的对象都是数据类型,所谓的类型也是结构体类型的数据.通过结构体去定义类型.
你有没有发现该所有的结构体对象,他们的数据类型就是自己定义的结构体类型;小学生王二狗的类型就是学生.
所以我们发现结构体就是类型的始祖,它定义了一个类型的属性和方法.方法就定义了该类型能做什么,比如int能作
加减运算.属性是对类型的描述,一般是用基本类型去描述复杂类型.
所有东西都是类型.类型的对象有两种使用方式:值类型, 引用类型
值类型的数据: 1 就是 1.站在数据对象的层面,所指就是具体的内存空间中存放的值,
引用类型的数据: 通过记录数据对象的内存地址,通过地址去访问数据,达到在不同内存空间,不同权限的地方,通过地址修改同一个或者说特定的对象

<3>.容器

- 通道:引用类型,对非缓存通道读写都会堵塞,为什么说是对通道的读写,因为都是其他对象调用读写函数,向通道操作. 缓存通道,只会在缓存满员才会产生向通道写操作堵塞.
- 数组:定长 值类型
- 切片:可变长度 引用类型 
- 映射:无序储存 引用类型,

都是的用于储存数据.储存数据的容器也是一种数据类型.

<4>.并发与通道

- 并发和并行
- 子协程Goroutin
- 程序的运行

2. 结构体和接口

  • 结构体: 值类型, 包含了各种属性,自身本没实体,意义在于创建的该结构体类型的对象 .
    可以将结构体理解成,具体的数据类型(比如说整形int)之上的一种抽象的存在形式
  • 接口:和结构体一样,自身本没实体,只是对具体方法实现的归纳.有实体的是实现了给接口方法的实现类对象.
    也是一种抽象形式.它是对方法的描述.
    空接口:没有任何方法,所以任何类型的数据,或者说任何类型的对象都实现了空接口,当函数的接收参数类型是空接口时,任何类型都能向函数中传递.

    3.包的使用

  • fmt
  • io
  • time
  • strings
  • sync:它提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制
  • net
  • strconv:本包提供字符串与基本数据类型互转的能力