Go 语言入门指南:基础语法和常用特性解析 | 青训营

60 阅读3分钟

书接上回Go基础语法总结(一),恰巧实践文章选题也有Go入门指南,于是决定第二篇标题改为实践文章。

基础语法部分上一篇已经讲了不少,不过补充一句:行末不需要分号! 再就是Go没有while循环,只有for!一样无圆括号,省略内容即为死循环,需要什么条件直接添加即可 for循环有多种形式:

for initialization; condition; post {
    // zero or more statements
}

for循环三个部分不需括号包围。大括号强制要求,左大括号必须和_post_语句在同一行。 _initialization_语句是可选的,在循环开始前执行。initalization_如果存在,必须是一条_简单语句(simple statement),即,短变量声明、自增语句、赋值语句或函数调用。condition是一个布尔表达式(boolean expression),其值在每次循环迭代开始时计算。如果为true则执行循环体语句。post语句在循环体执行结束后执行,之后再次对condition求值。condition值为false时,循环结束。 for循环的这三个部分每个都可以省略,如果省略initializationpost,分号也可以省略:

  • 函数 Go函数声明时变量类型后置;Golang函数原生支持返回多个值,实际业务逻辑代码几乎都返回两个值,一个是真正的返回结果,一个是错误信息
fun add (a int, b int) int { //a+b函数声明格式范例
	return a + b
}
  • Go和C一样支持指针和结构体,不过指针主要适用于改变传参

  • Go可以有结构体方法,和Java的成员方法类似

  • nil是Go中预定义的标识符,代表指针、通道、函数、接口、映射或切片的零值 ,也就是预定义好的一个变量

  • 错误处理 Go中习惯做法为使用一个单独的值来传递错误信息,返回值类型中加一个error就代表此函数可能会返回错误;函数实现时return需要同时return两个值;出错则返回nil和error,正常则返回正常结果和nil

  • 字符串操作 函数基本都在包strings,导入调用即可 字符串格式化相对C来说可以使用%v轻松打印任何类型的变量而不需要区分数字字符串,%+v打印详细结果,%#v更详细

  • JSON操作 Go中JSON操作很简单,对已有结构体只要保证每个字段的第一个字母大写,是公开字段,那么这个结构体就可以使用JSON.marshaler去序列化,变成一鞥JSON的字符串 序列化后的字符串也可以使用JSON.unmarshaler去反序列化一个空的变量里面 这样默认序列化出来的字符串,风格是大写字母开头而非下划线;可以在后面用json tag等语法来修改输出JSON结果里的字段名

  • 时间处理 Go常用time.now()来获取当前时间;用time.date构造一个带时区的时间;.sub对时间减法得到时间段;.UNIX获得时间戳

  • 数字解析 字符串和数字类型之间的转换都在STR conv包下;可以用parseInt parseFloat来解析一个字符串;parseint 参数 可以用Atoi把一个十进制字符串转成数字,用itoA把数字转成字符串 输入不合法将返回error

  • 进程 os.argv得到程序执行时的指定的命令行参数;so.getenv来读取环境变量

Go上手-工程实践

  • 猜数字无难度,基本语法熟悉即可
  • 词典涉及HTTP请求,有一定Java Web基础相对好理解一些,需要认真看代码消化吸收
  • 代理问题感觉需要计网基础更好上手,不然很多地方没法直接理解,目前水平还没法直接看懂理解,需要课后继续研究