为了账号安全,请及时绑定邮箱和手机立即绑定

Go语言第一课

郝林 架构师
难度入门
时长 3小时10分
学习人数
综合评分8.57
92人评价 查看评价
9.0 内容实用
8.2 简洁易懂
8.5 逻辑清晰
  • GO语言 工作区和GOPATH(1)

    查看全部
  • defer携带的表达式语句代表的是对某个函数或方法的调用。这个调用可能会有参数传入,比如:fmt.Print(i + 1)。如果代表传入参数的是一个表达式,那么在defer语句被执行的时候该表达式就会被求值了。注意,这与被携带的表达式语句的执行时机是不同的。

    查看全部
    1. 如果在当时有数据的通道多于一个,那么Go语言会通过一种伪随机的算法来决定哪一个case将被执行。

    2.  另一方面,对于包含通道发送操作的case来讲,其执行条件就是通道中至少还能缓冲一个数据(或者说通道未满)。类似的,当有多个case中的通道未满时,它们会被随机选择。

    3. 该条select语句的两个case中包含的都是针对通道ch3的发送操作。如果我们把这条语句置于一个循环中,那么就相当于用有限范围的随机整数集合去填满一个通道。

    4. 如果一条select语句中不存在default case, 并且在被执行时其中的所有case都不满足执行条件,那么它的执行将会被阻塞!当前流程的进行也会因此而停滞。直到其中一个case满足了执行条件,执行才会继续。

    5. 未被初始化的通道会使操作它的case永远满足不了执行条件。对于针对它的发送操作和接收操作来说都是如此。

    查看全部
  • 一个指针类型拥有以它以及以它的基底类型为接收者类型的所有方法,而它的基底类型却只拥有以它本身为接收者类型的方法。

    查看全部
    • 表达式switch语句

    • 类型switch语句

    查看全部
  • 但是当&*

    • 作为地址操作符出现时:

      &的作用是取址,而*的作用是取值;

      (更通俗地讲,当地址操作符更通俗地讲,当地址操作符&被应用到一个值上时会取出指向该值的指针值,而当地址操作符*被应用到一个指针值上时会取出该指针指向的那个值。它们可以被视为相反的操作)

    • *出现在一个类型之前(如*Person*[3]string)时就不能被看做是操作符了,而应该被视为 "一个符号" 。如此组合而成的标识符所表达的含义是作为第二部分的那个类型的指针类型。我们也可以把其中的第二部分所代表的类型称为基底类型。例如,*[3]string是数组类型[3]string的指针类型,而[3]string*[3]string的基底类型

    -----------------------------------

    注意,Person的两个方法GrowMove的接收者类型都是*Person,而不是Person。只要一个方法的接收者类型是其所属类型的指针类型而不是该类型本身,那么我就可以称该方法为一个指针方法。上面的Grow方法和Move方法都是Person类型的“指针方法”(对应传的如果是所属类型本身而不是所属类型的指针)。

    查看全部
    0 采集 收起 来源:Go语言-指针

    2018-10-29

    1. 函数类型声明的写法;

    2. 函数值(即“函数”)的写法;

    如果结果声明是带名称的,那么它就相当于一个已被声明但未被显式赋值的变量。我们可以为它赋值且在return语句中省略掉需要返回的结果值

    查看全部
    0 采集 收起 来源:Go语言-函数

    2018-10-28

  • 缓冲和非缓冲;

    双向与单向;


    查看全部
  • 暂存在通道值中的数据是先进先出的,即:越早被放入(或称发送)到通道值的数据会越先被取出(或称接收).


    针对通道值的接收操作也可以有第二个结果值,其更深层次的原因是,如果在接收操作进行之前或过程中通道值被关闭了,则接收操作会立即结束并返回一个该通道值的元素类型的零值。按照上面的第一种写法,我们无从判断接收到零值的原因是什么。不过,有了第二个结果值之后,这种判断就好做了。

    查看全部
  • 字典用于存储键-元素对(更通俗的说法是键-值对)的"无序集合"

    查看全部
  • 数组值的容量总是等于其长度;

    切片值的容量即为它的第一个元素值在其底层数组中的索引值与该数组长度的差值的绝对值;

    【切片属于“引用类型”——其零值为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 原生支持并发,与函数库有所区别
    查看全部

举报

0/150
提交
取消
课程须知
本课程的目的是带领大家入Go语言的门,然后再猛推一把!需要一些Linux Shell的基础,不熟悉Linux的童鞋,可以先去《Linux达人养成计划Ⅰ》中修炼一下~~
老师告诉你能学到什么?
1、怎样使用Go语言编程 2、怎样才算会用Go语言编程 3、怎样运用那些Go语言的特性去编程 4、Go语言的那些特性的实际益处在哪儿

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!