技术圈开发者交流群:

Go语言中的流程控制语句

流程控制是对程序在不同条件下的执行顺序的控制。通俗来讲,就是不同的代码在什么情况下才执行,哪些先执行,哪些后执行。

一般来说,程序代码的执行是从上往下顺序执行,但它这并不准确,如果有流程控制语句,只有当控制语句中指定条件得到满足时才执行相应的代码。

流程控制语句主要有:条件语句(if/else)、循环语句(for)、选择语句(switch/case)

GoLang 05月23日 920

Go语言中的运算符

运算符是程序中用于计算的符号。

算术运算符主要用于数学计算。

+-*/%分别表示加、减、乘、除、及取余数。

GoLang 03月15日 967

Go语言中的基本数据类型及类型状态

布尔类型的类型标识符是bool,它的值只能为: true(真)、false(假),其默认值为false

// 声明isSunday为bool类型,默认值为 false
var isSunday bool
// 声明isSaturday变量,并赋值为true
var isSaturday bool = true
// 类型推导模式:
var isSaturday = true
// 可以缩写为
isSaturday := true
GoLang 03月06日 1059

Go语言中的变量和常量

Go语言中的变量和常量是编码中不可缺少的一部分,它是用来存储程序执行过程中的值或结果。

变量是用于存储程序中的可变的值或结果。变量的命名只能有字母、数字、下划线组成,且只能由字母或下划线开头。

变量必须先声明、后使用,且声明后必须使用。

// 声明单个变量,格式:var 变量名 变量类型
var name string
// 声明多个同类型变量
var name1, name2 string
// 批量声明多个不同类型的变量
var (
    name3 string
    age int
)
GoLang 03月06日 1157

Go语言的数据类型和构成要素

这篇文章主要介绍Go语言中的数据类型和构成要素,包括标识符、关键字、运算符、标点符号等。

和其他语言一样,开始先来个Hello,world 程序:

GoLang 02月13日 1078

初识Go语言

Go语言是Google推出的一个全新的编程语言,在2009年11月正式对外发布。经过快速迭代,2012年3月28日,Go发布第⼀个正式的稳定版本。

出身名门的go语言,吸收了其他语言的特点,是一种并发的、带垃圾回收的、快速编译的语言。

GoLang 2020年07月01日 2258

字节序在Go语言里的使用

字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。

字节序分为:大端字节序小端字节序

小端字节序,指一个单元在计算机中存放时按照低位在低地址,高位在高地址的模式存放;

大端字节序,指一个单元在计算机中存放时按照低位在高地址,高位在低地址的模式存放。

GoLang 2020年04月05日 1175

Go 语言 Socket 的客户端和服务端的简单实现

在网络世界里,进程间的通信离不开socket,主要分为TCP SocketUDP Socket

下面以TCP 为例,分别写一下服务端客户端

这里要做的客户端服务端,在连接建立后,都可以接收和发送消息。

GoLang 2020年03月21日 1206

ThinkGo:一个轻量级的 Go 语言 MVC 框架

ThinkGo 是一个轻量级的 Go 语言 MVC 框架,目前支持路由、中间件、控制器、请求、响应、Session、视图、日志、缓存、ORM等 web 框架应该具备的基本功能,ThinkGo致力于让代码简洁且富于表达力,帮助开发者快速构建一个 Web 应用。

  • 简洁的路由,支持参数注入
  • 强大的路由中间件,支持前置/后置中间件
  • Session支持,支持cookie、redis及自定义存储
  • 强大的日志服务,支持多通道存储,遵循RFC 5424规范。
  • 缓存,支持memory、redis及自定义缓存驱动
  • 简洁的ORM,能使用原生 SQL、流畅的查询构造器
go get github.com/thinkoner/thinkgo
package main

import (
    "github.com/thinkoner/thinkgo"
    "fmt"
    "github.com/thinkoner/thinkgo/router"
    "github.com/thinkoner/thinkgo/context"
)

func main() {
    app := thinkgo.BootStrap()
    app.RegisterRoute(func(route *router.Route) {

        route.Get("/", func(req *context.Request) *context.Response {
            return thinkgo.Text("Hello ThinkGo !")
        })

        route.Get("/ping", func(req *context.Request) *context.Response {
            return thinkgo.Json(map[string]string{
                "message": "pong",
            })
        })

        // Dependency injection
        route.Get("/user/{name}", func(req *context.Request, name string) *context.Response {
            return thinkgo.Text(fmt.Sprintf("Hello %s !", name))
        })
    })
    // listen and serve on 0.0.0.0:9011
    app.Run()
}
GoLang 2019年02月12日 20251

使用GoLang语言爬虫,goquery+MongoDB爬取搜狗微信热点文章

goquery是一个使用go语言写成的HTML解析库,可以让你像jQuery那样的方式来操作DOM文档,使用起来非常的简便。

闲话少说,直接上代码:

package main

import (
    "gopkg.in/mgo.v2"
    "github.com/PuerkitoBio/goquery"
    "log"
    "gopkg.in/mgo.v2/bson"
)

type Article struct {
    Title      string
    Decription string
    Image      string
    Author     string
    Time       string
}

func main() {
    getArticle()
}

func getArticle() {

    //连接MongoDB数据库
    session, err := mgo.Dial("")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    session.SetMode(mgo.Monotonic, true)
    c := session.DB("test").C("article")

    //使用goquery开始抓取
    doc, err := goquery.NewDocument("http://weixin.sogou.com/")
    if err != nil {
        log.Fatal(err)
    }

    //编辑文章节点
    doc.Find(".news-list li").Each(func(i int, contentSelection *goquery.Selection) {

        //文章标题
        title := contentSelection.Find(".txt-box h3 a").Text()
        decription := contentSelection.Find(".txt-box .txt-info").Text()
        image, _ := contentSelection.Find(".img-box img").Attr("src")
        author := contentSelection.Find(".txt-box .account").Text()
        time, _ := contentSelection.Find(".txt-box .s-p").Attr("t")

        result := Article{}

        //是否已经保存过该文章
        err = c.Find(bson.M{"title": title}).One(&result)

        if err != nil {
            log.Println("第", i+1, "篇文章:", title)
            //保存至数据库
            err = c.Insert(&Article{title, decription, image, author, time})
            if err != nil {
                panic(err)
            }
        }
        log.Println(result)
    })
}

MongoDB查看爬取到的文章:

GoLang 2018年08月21日 49007

排行

解决方案

网站建设

专业企业官网建设,塑造企业形象,传递企业价值

系统开发

系统软件开发,用心思考,用心设计,用心体验

技术支撑

打破技术瓶颈,让不堪重负的项目起死回生

业务中台

构建全渠道一体化运营能力,实现全链路数字化

文案策划

文案撰写、营销策划,专注品牌全案

新媒体运营

一站式解决企业互联网营销痛点和难题

以技术的力量,改变互联网

联系我们
鄂ICP备19028750号-1 @copyright 2021 tech1024.com