内容简介:大家好,我是杨小爽。先提一个问题,不用Python写爬虫,我们还可以用什么写?答案:编程语言很多,选择也很多,我的答案是GO。
大家好,我是杨小爽。
先提一个问题,不用 Python 写爬虫,我们还可以用什么写?
答案:编程语言很多,选择也很多,我的答案是GO。
一、 Go 简要介绍
1、Go,又称Golang,是Google推出的一门开源编程语言,它是一种静态强类型、编译型、并发型编程语言。由Robert Griesemer、Rob Pike和Ken Thompson三人在2007年9月开始设计,于2009年11月正式开源,2012年1月推出稳定版本。
2、Go在语言层面上支持并发,使用关键字go来实现并发操作。
3、Go的标准库及其丰富,go语言中文社区针对标准库也提供了良好的中文翻译。
4、Go内置了十分强大的工具:go fmt,能帮助代码统一规范,提高代码的可读性。
5、Go IDE推荐:LiteIDE,VSCode,Eclipse插件GoClipse,Goland。
二、Go语法介绍
1、基本概念
1.1、打印Hello World!
packagemainimport("fmt")funcmain(){fmt.Println("Hello World!")}
1.2、关键字:Go关键字较少,只有25个
breakdefaultfuncinterfaceselectcase defer go map structchanelsegotopackageswitchconstfallthroughifrange typecontinueforimportreturnvar
1.3、注释
// 单行注释/*....多行注释....*/
1.4、程序基础结构讲解
package// 声明程序所属包import // 导入程序依赖包const // 常量定义var // 变量定义type goIntint// 一般类型声明(用户自定义类型)type LearnGo struct {} // 结构体声明type LearnGo interface{} // 声明接口func learnGo(){} // 函数定义
1.5、package的用法
①Go中的package是最基本的分发单位和工程管理中依赖关系的体现。②每个go文件开头必须要有package来声明go文件所属的源码包。③要生成Go语言可执行程序,必须是有命名main的go文件,且该文件内必须有main函数。④同一路径下只能有一个package,当然一个package可以由多个go文件组成。
1.6、import用法
①在main文件中导入其他包时,包将按顺序导入;②如果导入的某个包依赖其他包(如B包),会首先去导入B包,即会先初始化B包中的变量常量,如果有init函数,会自动执行init;③所有包导入完毕后,才会对main中常量变量进行初始化,然后执行init函数(如果存在),最后执行main函数;④如果一个包被导入多次,则该包只会导入一次。⑤import别名:导入的包名前输入下划线(_),是为了注册包里的引擎,让外部可以使用
1.7、数据类型
无符号整型:uint8,uint16,uint32,uint64有符号整型:int8,int16,int32,int64浮点型和复数:float32,float64,complex64,complex128布尔型:bool(true,false)字符串类型:string派生类型:指针类型(Pointer),数组类型,结构类型(struct),Channel类型(chan),函数类型(func),切片类型(slice),接口类型(interface),Map类型(map)类型零值:不是空值,指某个变量被声明后的默认值,值类型默认为0,布尔型默认为false,string默认为空字符串。
2、常用语法(一)
2.1、变量
变量,有一点编程基础的同学容易理解,没有的建议自己百度。
变量的声明:var<变量名称> [变量类型]变量的赋值:<变量名称> =<值/表达式/函数等>声明与赋值同时进行:var<变量名称>[变量类型] =<值/表达式/函数等>分组声明:var ( i int j float32 name string )同一个行声明多个变量:var a,b,c int = 123 或 a,b := 1,2注意:全局变量声明必须使用var关键字,局部变量则可省略变量可见性规则:大写字母开头的变量是可导出的,是公用变量,其他包来读取; 小写字母开头的变量不可导出,为包中私有变量
2.2、常量定义
定义方式:显式 const identifier [type] = value
隐式 const identifier = value(也叫无类型常量)
支持范围:布尔型、数值型和字符串型
3、常用语法(二)
3.1、算术运算符
+ 加 - 减 * 乘 / 除++ 自加一 -- 自减一
3.2、关系运算符
== 相等 != 不等> 大于 < 小于>= 大于等于 <= 小于等于
3.3、逻辑运算符
&& 与(同真则真)||或(一真则真)! 非(反转)
3.4、赋值运算符
= 表达式的值赋值给左边的变量+= 相加后赋值-= 想减后赋值*= 相乘后赋值/= 相除后赋值
4、常用语法(三)
4.1、条件语句if-else
// a的值大于0则打印出“a大于0”funcmain(){a:=1if a >0{ fmt.Print("a大于0") }}// a的值小于0则打印出“a小于0”funcmain(){a:= -1if a <0{ fmt.Print("a小于0")}else{ fmt.Print("a大于0") }}
4.2、选择语句switch
select通常结合channel使用。
// 根据switch后的值打印出“结果为3”funcmain() {switch3{case1:fmt.Print("结果为1")case2:fmt.Print("结果为2")case3:fmt.Print("结果为3") }}
4.3、循环语句for
// 语法for(init; condition; increment) { conditional code}// 死循环打印“我喜欢go语言”func main() {for{fmt.Println("我喜欢go语言")time.Sleep(1*time.Second) }}// 循环从切片中读取值,并打印func main() {a:= []string{"香蕉","苹果","雪梨"}forkey,value:= range a {fmt.Println("key的值为:") fmt.Println(key)fmt.Println("value的值为:") fmt.Println(value) }}
4.4、控制语句goto,break,continue
// goto 跳到某代码块// break 退出循环// continue 跳过本次循环后续内容,继续下一次循环// 打印出”代码块一“func main() { goto onefmt.Println("中间代码块") one:fmt.Println("代码块一")}
三、结尾语
关于go语言的介绍就到这里,笔记比较零碎,仅起快速复习作用。如果你对go语言感兴趣,可以去学习慕课网的《Go语言语法入门篇》,或者喜欢看书的朋友也可以看看《Go语言实战》。用go语言来编写爬虫无疑是十分简便,且效率强大,go语法层面上支持并发,语言设计者真正考虑到了如何合理利用多核处理器来提高效率,感兴趣的话就请不要错过。
最后,谢谢大家观看,欢迎关注我的公众号“探索数据之路”。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Go语言项目实战:并发爬虫
- golang语言爬虫代理代码示例
- Go语言使用chromedp爬虫
- 写爬虫还在用 python?快来试试 go 语言的爬虫框架吧
- go语言学习爬虫框架总结
- 兄弟连区块链培训Go语言爬虫编写
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。