才想起自己报了这个课程
go与c语法上的不同
1.变量-golang在变量上的命名要比c简单很多,在函数外面用var 在函数里面直接用:=就可以了。除此之外还支持更多的变量类型,除此之外声明变量也相较于c灵活不少,无需先声明再使用,可以在任意地方声明,只需要之后使用就好了.且每个语句不需要以分号结尾
变量的错误处理
func divide(x, y int) (int, error) {
if y == 0 {
return 0, errors.New("division by zero")
}
return x / y, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}
在上面的代码中,divide函数返回两个值:一个整数和一个错误。如果除数为0,则返回一个非nil的错误值,否则返回nil。在main函数中,我们使用if语句检查错误值是否为nil。如果不是,则打印错误信息,否则打印结果。
并发
平时在利用发请求的时候用过go 函数名来发送请求 用这种方式能在网站不给返回的情况下就可以多次发请求 但是很快就会出现bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a que ue was full. 至今不知道原因
语法 range
sum := 0
// 变量nums数组,i为下标,num为元素值
for i, num := range nums {
sum += num
if num == 2 {
fmt.Println("index:", i, "num:", num) // index: 0 num: 2
}
}
fmt.Println(sum) // 9
这段代码中遍历了数组nums中的元素,即数字2、3和4。range nums返回的是数组中每个元素的下标和值,i表示元素的下标,num表示元素的值。
因此,在循环中,第一次迭代时i为0,num为2;第二次迭代时i为1,num为3;第三次迭代时i为2,num为4。在迭代过程中,将每个元素的值累加到sum变量中,并检查num是否等于2。如果num等于2,则打印出该元素的下标和值。
最后,程序打印出了所有元素的和sum,即2+3+4=9。