go 语言学习笔记(二)

流程控制

if语句

if a > b {
	fmt.Println(...)
}
//如果出现多条件判断,需要使用`&&`, `||`, 和ruby不同的是,golang不支持`and`, `or`
if a == b && b == c {
	fmt.Println(...)
}
if a == b || b == c {
	fmt.Println(...)
}

switch语句

golang的switch语句和ruby的截然不同:

package main

import "fmt"

func main() {
	var bonus float32 = 0.0
	var I float32 = 0.0
	fmt.Print("输入利润:")
	fmt.Scanf("%f\n", &I)
	switch {
	case I > 1000000: //表达式后面必须要有`:`
		bonus = (I - 1000000) * 0.01
		I = 1000000
		fallthrough //继续执行紧跟的下一个case, ruby不支持这样做
	case I > 600000:
		bonus += (I - 600000) * 0.015
		I = 600000
		fallthrough
	case I > 400000:
		bonus += (I - 400000) * 0.03
		I = 400000
		fallthrough
	case I > 200000:
		bonus += (I - 200000) * 0.05
		I = 200000
		fallthrough
	case I > 100000:
		bonus += (I - 100000) * 0.075
		I = 100000
		fallthrough
	default: //类似于ruby的`else`
		bonus += I * 0.1
	}
	fmt.Println(bonus)
}

循环语句

golang只支持for循环,不支持while

//类似于C语言的循环
for i := 0; i < count; i++ {
}
//无限循环
i := 0
for {
	.....
	i++
	if i > 100 {
		break
	}
}

三元表达式

golang没有三元表达式,不过可以自己通过函数模仿

import "fmt"

type B bool

func main() {
	fmt.Println(B(80 >= 90).F("A", "B"))
}

func (b B) F(x, y interface{}) interface{} {
	if bool(b) == true {
		return x
	}
	return y
}

2019

代码整洁之道——程序员的职业素养

少于 1 分钟读完

很难想象我在读这本书的时候是除夕的晚上,早晨在公司的书架上无疑翻到这本书,读了几个章节就被深深的吸引住了, 吸引我的并不是我很迫切的需要提高自己的职业素养,而是发现作者描述的场景和自己碰到的情况何其的相似,在某些 情况下甚至是直击内心的。在家人都休息的时候,我在深夜一点钟看完了这本书,而且我觉得有必要做一下笔记,...

解决 nginx 错误:413 Request Entity Too Large

1 分钟读完

最近项目上遇到一个问题,某个 http 请求会返回 413 的状态码,一般来讲,这个问题是很好解决的, 网上有非常多的解决方案,但是我依然花了很长的时间找到问题根源,所以我觉得可以把这个过程记录下来。

Back to Top ↑

2018

Back to Top ↑

2017

Back to Top ↑

2016

Back to Top ↑

2015

Back to Top ↑

2014

Back to Top ↑