使用JetBrains goland遇到一个问题

kyle 回复了问题 • 5 人关注 • 4 个回复 • 291 次浏览 • 5 天前 • 来自相关话题

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

回复

flewliu 发起了问题 • 1 人关注 • 0 个回复 • 84 次浏览 • 6 天前 • 来自相关话题

gogland 设置Run Configurations

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

Golang的fallthrough与switch的坑

qiangmzsx 发表了文章 • 7 个评论 • 228 次浏览 • 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 个回复 • 4541 次浏览 • 2017-07-11 09:59 • 来自相关话题

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

朋也 发表了文章 • 0 个评论 • 469 次浏览 • 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 个回复 • 965 次浏览 • 2017-06-19 10:20 • 来自相关话题

Golang 基础学习之Go map操作

WilliamSheng 发表了文章 • 2 个评论 • 229 次浏览 • 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")
}

}

出gopher大会早鸟票

go、go、go 回复了问题 • 6 人关注 • 7 个回复 • 463 次浏览 • 2017-04-14 10:04 • 来自相关话题

go env 的默认值问题

asdfsx 回复了问题 • 5 人关注 • 4 个回复 • 490 次浏览 • 2017-04-07 17:53 • 来自相关话题

Go之旅-变量

frankphper 发表了文章 • 3 个评论 • 340 次浏览 • 2017-03-10 00:03 • 来自相关话题

Go之旅-变量

Go语言变量有固定的数据类型,决定了变量内存的长度和存储格式。Go变量只能修改变量值,不能改变变量的数据类型。Go编译器会把未使用的局部变量当做错误,未使用的全局变量不受影响。

查看全部
					

Go之旅-变量


Go语言变量有固定的数据类型,决定了变量内存的长度和存储格式。Go变量只能修改变量值,不能改变变量的数据类型。Go编译器会把未使用的局部变量当做错误,未使用的全局变量不受影响。


// 声明包main
package main
// 导入包
import(
"fmt"
)
// 定义变量
var a int // 初始化为二进制零值
var b = false // 显示初始化变量的值,可以省略变量类型,由编译器自动类型推断
var c, d = 100, "hello" // 一次定义多个变量,数据类型可以不同
// 定义多个变量,建议使用组的形式定义多个变量
var (
e, f int
g, h = 100, "hello"
)

// 定义函数main
func main() {
// 简短模式声明变量
i := 100
/**
*简短模式声明变量,有以下3个条件
*显示初始化
*不能显示指定数据类型
*只能在函数内部使用
*/
// 多变量赋值
x, y := 1, 10
x, y = x+10, y+1 // 先计算右值,然后再对左边变量赋值,必须保证左右值得数据类型相同
// 打印变量的值
fmt.Println(a);
fmt.Println(b);
fmt.Println(c, d)
fmt.Println(e, f)
fmt.Println(g, h)
fmt.Println(i)
fmt.Println(x, y)
}

今天就先到这,欢迎各位Go语言大神一起交流分享。

println 与 fmt.Println 一起使用为何不是顺序打印?

songtianyi 回复了问题 • 4 人关注 • 4 个回复 • 840 次浏览 • 2017-02-20 11:23 • 来自相关话题

客户端发起post请求,golang服务端总是收不到数据?

回复

elone 回复了问题 • 1 人关注 • 1 个回复 • 894 次浏览 • 2016-12-31 07:42 • 来自相关话题

bufio.ReadSlice

stevewang 回复了问题 • 2 人关注 • 3 个回复 • 500 次浏览 • 2016-12-27 17:58 • 来自相关话题

JetBrains IDE (Gogland)for Go 下载地址 Windows,Mac,linux 都有

leaf 发表了文章 • 8 个评论 • 5126 次浏览 • 2016-12-16 10:39 • 来自相关话题