go 编写yml文件

回复

KSpeer 回复了问题 • 1 人关注 • 1 个回复 • 355 次浏览 • 2017-09-01 14:41 • 来自相关话题

语法问题,帮忙看看

gongxun 回复了问题 • 2 人关注 • 1 个回复 • 167 次浏览 • 2017-08-31 19:22 • 来自相关话题

项目中过多的使用反射等功能是不是对别的程序员不太友好?

moxie 回复了问题 • 7 人关注 • 7 个回复 • 454 次浏览 • 2017-08-17 12:46 • 来自相关话题

go在不使用任何框架的情况下,能不能进行web开发

飞雪无情 回复了问题 • 9 人关注 • 9 个回复 • 692 次浏览 • 2017-08-15 22:01 • 来自相关话题

go get github.com/elastic/beats 命令出错,求指点

voidint 回复了问题 • 3 人关注 • 3 个回复 • 330 次浏览 • 2017-08-12 09:10 • 来自相关话题

GoCN 每日新闻 -- 笔记

cyp 发表了文章 • 0 个评论 • 255 次浏览 • 2017-08-08 14:19 • 来自相关话题

GOCN每日新闻(2017-08-06)




GoCN 每日新闻(2017-04-29)


3 利用 Docker 多阶段构建功能 Use multi-stage builds,在构建环境中构建程序,使用轻量的基础镜像构建运行镜像。


5 Go项目体检器 可集成到 github 项目的 README.md



官方的依赖管理工具 dep 可以用于生产环境了

xiongwenwu 回复了问题 • 9 人关注 • 6 个回复 • 733 次浏览 • 2017-07-29 14:13 • 来自相关话题

使用JetBrains goland遇到一个问题

kyle 回复了问题 • 5 人关注 • 4 个回复 • 455 次浏览 • 2017-07-19 11:02 • 来自相关话题

使用JetBrains gogland获取不到beego conf 配置文件解决方法

回复

flewliu 发起了问题 • 1 人关注 • 0 个回复 • 301 次浏览 • 2017-07-18 10:46 • 来自相关话题

gogland 设置Run Configurations

tupunco 回复了问题 • 2 人关注 • 1 个回复 • 277 次浏览 • 2017-07-17 19:51 • 来自相关话题

Golang的fallthrough与switch的坑

qiangmzsx 发表了文章 • 7 个评论 • 360 次浏览 • 2017-07-11 10:02 • 来自相关话题

最近写Golang的是发现一个fallthrough与switch的坑:

switch value.(type) {
    ... 			查看全部
					

最近写Golang的是发现一个fallthrough与switch的坑:


switch value.(type) {
case int:
fallthrough
case int64:
//......
}

编译就报错:


cannot fallthrough in type switch

在type switch 中不能使用


fallthrough

只能修改代码:


switch value.(type) {
case int , int64:
//......
}

JetBrains 终于推出了 Golang IDE

qiangmzsx 回复了问题 • 26 人关注 • 28 个回复 • 5591 次浏览 • 2017-07-11 09:59 • 来自相关话题

golang解析网页,可以做爬虫了

朋也 发表了文章 • 0 个评论 • 687 次浏览 • 2017-06-21 13:46 • 来自相关话题

java里用Jsoup,nodejs里用cheerio,都可以相当方便的解析网页,在golang语言里也找到了一个网页解析的利器,相当的好用,选择器跟jQuery一样

安装

... 查看全部

java里用Jsoup,nodejs里用cheerio,都可以相当方便的解析网页,在golang语言里也找到了一个网页解析的利器,相当的好用,选择器跟jQuery一样



安装


go get github.com/PuerkitoBio/goquery

使用


其实就是项目的readme.md里的demo


package main

import (
"fmt"
"log"

"github.com/PuerkitoBio/goquery"
)

func ExampleScrape() {
doc, err := goquery.NewDocument("http://metalsucks.net")
if err != nil {
log.Fatal(err)
}

// Find the review items
doc.Find(".sidebar-reviews article .content-block").Each(func(i int, s *goquery.Selection) {
// For each item found, get the band and title
band := s.Find("a").Text()
title := s.Find("i").Text()
fmt.Printf("Review %d: %s - %s\n", i, band, title)
})
}

func main() {
ExampleScrape()
}

乱码问题


中文网页都会有乱码问题,因为它默认是utf8编码,这时候就要用到转码器了


安装 iconv-go


go get github.com/djimenez/iconv-go

使用方法


func ExampleScrape() {
res, err := http.Get(baseUrl)
if err != nil {
fmt.Println(err.Error())
} else {
defer res.Body.Close()
utfBody, err := iconv.NewReader(res.Body, "gb2312", "utf-8")
if err != nil {
fmt.Println(err.Error())
} else {
doc, err := goquery.NewDocumentFromReader(utfBody)
// 下面就可以用doc去获取网页里的结构数据了
// 比如
doc.Find("li").Each(func(i int, s *goquery.Selection) {
fmt.Println(i, s.Text())
})
}
}
}

进阶


有些网站会设置Cookie, Referer等验证,可以在http发请求之前设置上请求的头信息


这个不属于goquery里的东西了,想了解更多可以查看golang里的 net/http 包下的方法等信息


baseUrl:="http://baidu.com"
client:=&http.Client{}
req, err := http.NewRequest("GET", baseUrl, nil)
req.Header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
req.Header.Add("Referer", baseUrl)
req.Header.Add("Cookie", "your cookie") // 也可以通过req.Cookie()的方式来设置cookie
res, err := client.Do(req)
defer res.Body.Close()
//最后直接把res传给goquery就可以来解析网页了
doc, err := goquery.NewDocumentFromResponse(res)

参考



可以愉快的爬人家的网站了




原文:https://tomoya92.github.io/2017/06/21/golang-goquery/

GoCN为什么没有使用beego来搭建呢?

AlexaMa 回复了问题 • 6 人关注 • 7 个回复 • 1384 次浏览 • 2017-06-19 10:20 • 来自相关话题

Golang 基础学习之Go map操作

WilliamSheng 发表了文章 • 2 个评论 • 366 次浏览 • 2017-06-14 22:05 • 来自相关话题

package main

import "fmt"

func main() {
var countryMap map[string]string

/* 创建集合 */
cou... 			查看全部
					
package main

import "fmt"

func main() {
var countryMap map[string]string

/* 创建集合 */
countryMap = make(map[string]string)

/* map 插入 key-value */
countryMap["ShengRI"] = "1988-04-09"

/* 使用 key 输出 map 值 */
for country := range countryMap {
fmt.Println("Capital of",country,"is",countryMap[country])
}

/* 查看元素在集合中是否存在 */
captial, ok := countryMap["ShengRI"]
/* 如果 ok 是 true, 则存在,否则不存在 */
if(ok){
fmt.Println("Capital of United States is", captial)
}else {
fmt.Println("is not ok")
}

MyMap()

}

func MyMap(){
var myMap map[string]string
myMap = make(map[string]string)

myMap["idc_id"] = "2"
myMap["idc_name"] = "BeiJingIDC"
myMap["idc_prod"] = "OpenStack"
myMap["idc_zone"] = "BJ"
myMap["idc_abs"] = "2018-10-02"

for m := range myMap{
fmt.Println(m,myMap[m])
}

delete(myMap,"idc_abs")
fmt.Println(myMap)
myMap["idc_abs"] = "2088-10-02"

fmt.Println(myMap)

_, ok := myMap["idc_zone"]
if ok {
fmt.Println(myMap["idc_zone"],"is ok")
}

}