-
GO语言 工作区和GOPATH(1)
查看全部 -
defer
携带的表达式语句代表的是对某个函数或方法的调用。这个调用可能会有参数传入,比如:fmt.Print(i + 1)
。如果代表传入参数的是一个表达式,那么在defer
语句被执行的时候该表达式就会被求值了。注意,这与被携带的表达式语句的执行时机是不同的。查看全部 -
如果在当时有数据的通道多于一个,那么Go语言会通过一种伪随机的算法来决定哪一个
case
将被执行。另一方面,对于包含通道发送操作的
case
来讲,其执行条件就是通道中至少还能缓冲一个数据(或者说通道未满)。类似的,当有多个case
中的通道未满时,它们会被随机选择。该条
select
语句的两个case
中包含的都是针对通道ch3
的发送操作。如果我们把这条语句置于一个循环中,那么就相当于用有限范围的随机整数集合去填满一个通道。如果一条
select
语句中不存在default case
, 并且在被执行时其中的所有case
都不满足执行条件,那么它的执行将会被阻塞!当前流程的进行也会因此而停滞。直到其中一个case
满足了执行条件,执行才会继续。未被初始化的通道会使操作它的
case
永远满足不了执行条件。对于针对它的发送操作和接收操作来说都是如此。
查看全部 -
一个指针类型拥有以它以及以它的基底类型为接收者类型的所有方法,而它的基底类型却只拥有以它本身为接收者类型的方法。
查看全部 -
表达式
switch
语句类型
switch
语句
查看全部 -
但是当
&
和*
作为地址操作符出现时:
&的作用是取址,而*的作用是取值;
(更通俗地讲,当地址操作符更通俗地讲,当地址操作符
&
被应用到一个值上时会取出指向该值的指针值,而当地址操作符*
被应用到一个指针值上时会取出该指针指向的那个值。它们可以被视为相反的操作)当
*
出现在一个类型之前(如*Person
和*[3]string
)时就不能被看做是操作符了,而应该被视为 "一个符号" 。如此组合而成的标识符所表达的含义是作为第二部分的那个类型的指针类型。我们也可以把其中的第二部分所代表的类型称为基底类型。例如,*[3]string
是数组类型[3]string
的指针类型,而[3]string
是*[3]string
的基底类型
-----------------------------------
注意,
Person
的两个方法Grow
和Move
的接收者类型都是*Person
,而不是Person
。只要一个方法的接收者类型是其所属类型的指针类型而不是该类型本身,那么我就可以称该方法为一个指针方法。上面的Grow
方法和Move
方法都是Person
类型的“指针方法”(对应传的如果是所属类型本身而不是所属类型的指针)。查看全部 -
函数类型声明的写法;
函数值(即“函数”)的写法;
如果结果声明是带名称的,那么它就相当于一个已被声明但未被显式赋值的变量。我们可以为它赋值且在
return
语句中省略掉需要返回的结果值查看全部 -
缓冲和非缓冲;
双向与单向;
查看全部 -
暂存在通道值中的数据是先进先出的,即:越早被放入(或称发送)到通道值的数据会越先被取出(或称接收).
针对通道值的接收操作也可以有第二个结果值,其更深层次的原因是,如果在接收操作进行之前或过程中通道值被关闭了,则接收操作会立即结束并返回一个该通道值的元素类型的零值。按照上面的第一种写法,我们无从判断接收到零值的原因是什么。不过,有了第二个结果值之后,这种判断就好做了。
查看全部 -
字典用于存储键-元素对(更通俗的说法是键-值对)的"无序集合"
查看全部 -
数组值的容量总是等于其长度;
切片值的容量即为它的第一个元素值在其底层数组中的索引值与该数组长度的差值的绝对值;
【切片属于“引用类型”——其零值为nil】
查看全部 -
`&myDog` 是指针类型,所以它拥有它本身及以它的基底类型(Dog)为接收者类型(func (dog Dog))的方法,所以`&myDog`拥有 Name() 和 Age()方法,是实现了Pet接口的;`myDog`的基底类型`Dog`只拥有以它本身为接受者类型的方法,也是Age和Name;
当将接受者类型改为(dog *Dog)时,对于指针类型,拥有Both,所以为true,而此时对于myDog,它没有以它本身为接受者类型的方法,所以为false。
查看全部 -
字符串的两种表示法:
原生表示法:反引号``,所见即所得,除了回车.
解释型表示法:双引号"",转义符会在程序编译期间被转义.
%q用于显示字符串值的表象值
查看全部 -
go get:
-d : 只执行下载动作, 不执行安装动作
-fix :在下载代码包后先执行修正动作,而后再进行编译和安装
-u : 利用网络来更新已有的代码包及其依赖包
查看全部 -
1 原生支持并发,与函数库有所区别查看全部
举报