189 8069 5689

go语言./不能执行 go语言错误处理

go语言中数组使用的注意事项和细节

1、数组是多个 相同类型 的数据的组合,一个数组一旦声明/定义了,其 长度是固定的,不能动态变化 。

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的鄂城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

2、var arr []int    这时arr就是一个slice 切片 。

3、数组中的元素可以是任何数据类型,包括值类型和引用类型,但是 不能混用 。

4、数组创建后,如果没有赋值,有默认值如下:

    数值类型数组:    默认值为 0

    字符串数组:       默认值为 ""

    bool数组:           默认值为 false

5、使用数组的步骤:

    (1)声明数组并开辟空间

    (3)给数组各个元素赋值

    (3)使用数组

6、数组的下标是从0开始的。

7、数组下标必须在指定范围内使用,否则报panic:数组越界,比如var arr [5]int的有效下标为0~4.

8、Go的数组属于 值类型 ,在默认情况下是 值传递 ,因此会进行值拷贝。 数组间不会相互影响。

9、如想在其他函数中去修改原来的数组,可以使用 引用传递 (指针方式)。

10、长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度,看以下案例:

题1:编译错误,因为不能把[3]int类型传递给[]int类型,前者是数组,后者是切片;

题2:编译错误,因为不能把[3]int类型传递给[4]int类型;

题3:编译正确,因为[3]int类型传给[3]int类型合法。

golang异常处理

go语言没有使用像java python等语言的try catch/except 语句来处理异常,而是使用它特有的panic,recover,defer来捕获和处理异常

分析:

divide是一个做除法的函数,可能会出现除数为0的错误,所以在函数一开头就定义了一个defer匿名函数(注意这里的匿名函数定义完后面要带上括号才能执行),这个匿名函数被defer修饰了所以只在divide函数执行完才会执行,而不是一进来就执行。后面判断b是否等于0,如果为零的话我们手动使用panic抛出了异常,这个异常是在divide函数退出前执行的defer匿名函数里通过recover()来捕获的,如果err不为空就说明发生了错误,打印error happen!和panic抛出的divided by zero!! 然后主协程返回到主函数main里,继续执行后面的打印

go语言并发入门编程,我的子协程为什么不会执行?

一开始你只有一个主协程,如果子协程不启动,即便主协程让出了时间片,也没有可运行的子协程啊。交换顺序就是起到了先启动子协程的作用。

大家帮我看看这个go语言程序运行怎么不出结果啊?

这个,os的args应该是 从0开始的index吧。另外你运行这个,如果只用go run,或者 build之后,只是执行这个程序,不加参数,os.Args应该只有1个元素也就是说len(os.Args) == 1. 这样显然循环不会执行啊……

Go语言基础语法(一)

本文介绍一些Go语言的基础语法。

先来看一个简单的go语言代码:

go语言的注释方法:

代码执行结果:

下面来进一步介绍go的基础语法。

go语言中格式化输出可以使用 fmt 和 log 这两个标准库,

常用方法:

示例代码:

执行结果:

更多格式化方法可以访问中的fmt包。

log包实现了简单的日志服务,也提供了一些格式化输出的方法。

执行结果:

下面来介绍一下go的数据类型

下表列出了go语言的数据类型:

int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值。

常量是在程序编译时就确定下来的值,程序运行时无法改变。

执行结果:

执行结果:

Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符。

算术运算符:

关系运算符:

逻辑运算符:

位运算符:

赋值运算符:

指针相关运算符:

下面介绍一下go语言中的if语句和switch语句。另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍。

if语法格式如下:

if ... else :

else if:

示例代码:

语法格式:

另外,添加 fallthrough 会强制执行后面的 case 语句,不管下一条case语句是否为true。

示例代码:

执行结果:

下面介绍几种循环语句:

执行结果:

执行结果:

也可以通过标记退出循环:

--THE END--

go语言操作符 ^ 和 &^

很多语言都是采用 ~ 作为按位取反运算符,Go 里面采用的是 ^ 。

如果作为二元运算符,^ 表示按位异或,即:对应位相同为 0,相异为 1。

操作符 ^,按位置零,例如:z = x ^ y,表示如果 y 中的 bit 位为 1,则 z 对应 bit 位为 0,否则 z 对应 bit 位等于 x 中相应的 bit 位的值。

对于有符号的整数来说,是按照补码进行取反操作的(快速计算方法:对数 a 取反,结果为 -(a+1) ),对于无符号整数来说就是按位取反

计算过程

以3为例  3在内存中补码为 0*** 0011

取反            1*** 1100

-1操作          1*** 1011

除符号位取反    1*** 0100 结果为-4

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

以9为例 9在内存中补码为 0*** 1001

取反            1*** 0110

-1操作          1*** 0101

除符号位取反    1*** 1010 结果为-10

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

以-5为例 -5在内存中为的补码为 1*** 1011

为什么呢

-5源码          1*** 0101

除符号取反      1*** 1010

+1操作          1*** 1011

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

那么-5取反怎么算

补码 1***1011取反为 0***0100

因为符号位为0,所以是正数了,正数的补码反码源码都是一个,所以是4

===================================

再看-1

-1源码          1*** 0001

除符号取反      1*** 1110

+1操作          1*** 1111

补码 1*** 1111 取反为 0*** 0000

因为符号位为0,所以是正数了,正数的补码反码源码都是一个,所以是0

go语言取反输出的例子看这里


新闻标题:go语言./不能执行 go语言错误处理
标题路径:http://jkwzsj.com/article/dosoocd.html

其他资讯