go 语言学习

使用:=这个符号。使用了这个符号之后,开发者不再需要写var关键字,只需要定义变量名,并在后面进行赋值即可。并且,Golang编译器会根据后面的值的类型,自动推导出变量的类型。

go 语法:1, 区分大小写
标识符为(下划线)的变量,是系统保留的匿名变量,在赋值后,会被立即释放,称之为匿名变量。其作用是变量占位符,对其变量赋值结构。通常会在批量赋值时使用。
例如,函数返回多个值,我们仅仅需要其中部分,则不需要的使用
来占位

在Golang的常量定义中,使用const关键字,并且不能使用:=标识符。

判断:
在Golang中,唯一的不同是不需要小括号,但是大括号还是必须的
循环:
和判断语句一样,在Golang中也是没有小括号的。
此外,在循环条件中,初始化语句和后置语句是可选的,这个时候把分号去掉,for循环就变成了while循环。
函数:
在Golang的函数定义中,所有的函数都以func开头,并且Golang命名推荐使用驼峰命名法。
注意,在Golang的函数中,如果首字母是小写,则只能在包内使用;如果首字母是大写,则可以在包外被引入使用。可以理解为,使用小写的函数,是private的,使用大写的函数,是public的。

Golang中的函数可以返回任意多个返回值。

defer 语句会将函数推迟到外层函数返回之后执行。 推迟调用的函数其参数会立即求值,但直到外层函数返回前该函数都不会被调用。

指针:
在Golang中,指针的用法和 C 是一样的。同样是用&取地址,用*取地址中的值。

数组:
var a [10]int
注意,在Golang中,数组的大小也同样和 C 语言一样不能改变

切片:
数组的切片,顾名思义,就是将一个数组按需切出自己所需的部分。
每个数组的大小都是固定的。而切片则为数组元素提供动态大小的、灵活的视角。在实践中,切片比数组更常用。
这是因为,Golang中的切片,不是拷贝,而是定义了新的指针,指向了原来数组所在的内存空间。所以,修改了切片数组的值,也就相应的修改了原数组的值了。
此外,切片可以用append增加元素。但是,如果此时底层数组容量不够,此时切片将会指向一个重新分配空间后进行拷贝的数组。

因此可以得出结论:
切片并不存储任何数据,它只是描述了底层数组中的一段。
更改切片的元素会修改其底层数组中对应的元素。
与它共享底层数组的切片都会观测到这些修改。

make:
切片可以用内建函数 make 来创建,这也是你创建动态数组的方式。
make 函数会分配一个元素为零值的数组并返回一个引用了它的切片:

结构体:
而在Golang中,则没有对象这一说法,因为Golang是一个面向过程的语言。但是,我们又知道面向对象在开发中的便捷性,所以我们在Golang中有了结构体这一类型。
方法:
也就是说,只有指针接收者类型的方法,才能修改这个接收器的成员值,非指针接收者,方法修改的只是这个传入的指针接收者的一个拷贝
接口:
这一部分和结构体的定义很相似,但是里面的元素换成了函数,但是这个函数不需要func关键字。这里和Java中的接口相似,不需要访问修饰符,只需要函数名参数返回类型。
定义完接口之后,我们需要定义方法去实现这些接口。注意,这里新定义方法的方法名,参数,返回类型,必须和接口中所定义的完全一致。

线程与协程:
简单来说,进程和线程是由操作系统进行调度的,协程是对内核透明,由程序自己调度的。不仅如此,Golang的协程所占用的内存空间极小,也就是说,协程更加的轻量。此外,协程的切换一般由程序员在代码中显式控制,而不是交给操作系统去调度。它避免了上下文切换时的额外耗费,兼顾了多线程的优点,简化了高并发程序的复杂。
至于别的,本文不进行深入的研究,本文的基调还是以入门为主,即怎么去用。

goroutine:
简单来说,我们所编写的Golang源代码全部都跑在goroutine中。
我们只需要使用go关键字,就可以启动一个goroutine。

select:
select关键字用在有多个信道的情况下。
他的目的是为了提高系统的效率,而不至于在某一个信道阻塞的情况下,不知道该干什么。
select中会有case代码块,用于发送或接收数据。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • hello World 应用程序入口[注意] 必须是main包:package main 必须是main方法:fu...
    茶还是咖啡阅读 416评论 0 2
  • 一、认识反射 维基百科中的定义:在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改...
    Every_dawn阅读 1,627评论 0 0
  • 基础 go的学习,感谢Go By Example、go网络编程与go语言标准库随着学习的深入,此文章持续更新......
    blossom_绽放阅读 517评论 0 1
  • 1.go版本的hello world 和C语言相似,go语言的基本组成有:*包声明,编写源文件时,必须在非注释的第...
    孤寡老人sos阅读 400评论 0 0
  • Go 语言的基础组成有以下几个部分:包声明 引入包 函数 变量 语句 & 表达式 注释 当标识符(包括常量、变量、...
    安然在路上阅读 262评论 0 0