go struct 零值_云码TV: 专访Go

ef54b198dd97dd04bb6a5658f661e4d9.png

下面欢迎Go同学

01

主持人:欢迎Go同学

Go同学:

大家好,我叫Go,在服务端的开发中,总能抓住程序员的痛点,以最直接、简单、高效、稳定的方式来解决问题,我还是开源的哟!

02

记者:Go你好,请问你的特别之处在哪?

Go同学:

~易学习

~基于 goroutines 和 channels 的简单并发编程

~丰富的标准库

~Go 性能优越

~语言层面定义源代码的格式化

~标准化的测试框架

~Go 程序方便操作

~Defer 声明,避免忘记清理

~新类型

03

记者:Go你好,请问你的应用场景有哪些?

Go同学:

我提供了纤程、指针、 unsafe, cgo 加上 C/C++ 兼容的内存布局和跨平台的汇编,所以问题不是我适合做什么,是你有能力用我做什么。

05

记者:Go你好,请问多线程之间如何传递数据?

Go同学:

其实go的参数传递,核心就是一句话:go里所有参数传递都是值传递,既把参数复制一份放到函数里去用。

go的函数传参,不管参数是什么类型,都会复制一份,然后新的参数在函数内部被使用。

不像其他语言,有的时候传参只是传递一个原来参数的引用(引用和指针的区别,欢迎翻看我上上上上一篇分享),在函数内部操作变量,其实还是操作的原变量。go内不会直接的操作原变量。

06

记者:Go同学,请问你如何安装?

Go同学:

和其他语言的安装类似,我也可以采用三种方式进行,从简单到复杂依次是通过系统方式安装、官方二进制包安装和源码编译安装。我支持的系统:Linux、FreeBSD、Mac OS、Windows;官方下载地址:https://golang.org/dl/;

b55bb1bb6af82df9ad3a19895a8e3006.png

07

记者:Go同学,请问基础语法是怎么样的?

Go同学:

~Go语言要求标识符以一个字母或下划线开头,后面可以跟任意数量的字母、数字、下划线。不能使用关键字作为标识符区分大小写,变量num和变量Num是两个变量;

~Go语言的变量声明方式和其他语言(如C、Java、Python)不太一样。

~当我们声明变量时,可以对其进行初始化。当有初始值时,我们可以省略变量的类型,变量会根据对应的初始值获取正确的类型。

~当我们使用:=声明变量时,不用写var也不用写类型,但是这种方式只能在函数内部使用,不能在函数外部使用。当在函数外部声明变量时,只能使用var。

~Go 语言的字符串可以通过 + 实现;

~Go 代码中会使用到25 个关键字或保留字;

~Go 语言中变量的声明必须使用空格隔开。

...还有太多太多,想了解详细的可以关注云码技术栈,我们会为您提供更好的资料!

08

记者:Go你好,数据类型的是怎么样的?

Go同学:

~布尔型

           常量 true 或者 false

~数值类型

       整数类型分为:有符号数:int、int8、int16、int32 (rune)、int64无符号数:uint、uint8 (byte)、uint16、uint32、uint64、其中int和uint的两种类型的长度相同,取决于具体的编译器,比如在32位系统上通常为32位,在64位系统上通常为64位。像int8、uint8这些类型则是Go语言直接定义好位数的类型。rune、byte是int32、uint8的别名。当我们需要使用整数时,应当尽量使用int类型。当然,如果你有特殊的理由使用其他整数类型,便另当他论。浮点数类型有两种:float32和float64,注意没有所谓的float类型。复数类型也有两种:complex64和complex128

~字符串类型

~派生类型:

        (a) 指针类型(Pointer)

        (b) 数组类型

        (c) 结构化类型(struct)

        (d) Channel 类型

        (e) 函数类型

        (f) 切片类型

        (g) 接口类型(interface)

        (h) Map 类型

09

记者:Go同学,请问您如何定义变量?

Go同学:

~声明变量的一般形式是使用 var 关键字

~第一种,指定变量类型,如果没有初始化,则变量默认为零值。

~第二种,根据值自行判定变量类型

~第三种,省略 var, 注意 *:=* 左侧如果没有声明新的变量,就产生编译错误

10

记者:Go同学,请问您如何定义常量?

Go同学:

~const identifier [type] = value,略类型说明符 [type],因为编译器可以根据变量的值来推断其类型

~常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

11

记者:Go同学,请问你有哪些运算符

Go同学:

算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符

12

记者:Go同学,您有哪些流程控制语句?

Go同学:

与其他编程语言相似,主要的逻辑控制语句都是这几类:if,if else,swith,select

13

记者:Go你好,有哪些跳出循环或者是终止循环的方法?

Go同学:

我有for 循环,可以用break/continue/goto语句

14

记者:Go同学,请问如何定义函数

Go同学:

函数定义解析:

~func:函数由 func 开始声明

~function_name:函数名称,函数名和参数列表一起构成了函数签名。

~parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。

~return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。

~函数体:函数定义的代码集合。

15

记者:Go语言有哪些变量作用域

Go同学:

~函数内定义的变量称为局部变量

~函数外定义的变量称为全局变量

~函数定义中的变量称为形式参数

16

记者:Go你好,数组该怎么使用?

Go同学:

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:

var variable_name [SIZE] variable_type

Go语言初始化数组:

var test = [5] float32{200.0, 2.0, 3.14, 20.0, 100.0}

可以通过索引获取/设置数组中的值:

test[4]
test[2] = 100

17

记者:Go同学,请问如何处理异常?

Go同学:

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

error类型是一个接口类型,这是它的定义:

type error interface {
    Error() string
}

我们可以在编码中通过实现 error 接口类型来生成错误信息。

函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:

func Sqrt(f float64) (float64, error) {
    if f         return 0, errors.New("math: square root of negative number")
    }
    // 实现
}

18

记者:Go同学,有什么好用的开发工具吗?

Go同学:

~IDEA

        IntelliJ idea是非常强大的一款IDE,支持丰富的插件。需要安装两个插件Go和File Watcher

~GoLand

        GoLand 是 Jetbrains 家族的 Go 语言 IDE

~LiteIDE

        LiteIDE 是一款开源、跨平台的轻量级 Go 语言集成开发环境(IDE)

~Eclipse

        Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。

参考资料:

https://www.runoob.com/go/go-tutorial.html

57505a0d1029fd6afddadcfa5ade5bc2.png

云码教育

微信号|云码技术栈

新浪微博|云码技术栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值