go 语言学习笔记(一)
本次学习目的:熟悉了解 go 语言特点,实现基本功能。
1、readfile.go
package main import (
"bufio"
"fmt"
"io"
"os"
) func ReadFile(filepath string) []string {
fi, err := os.Open(filepath)
if err != nil {
fmt.Printf("Read file error\n")
}
defer fi.Close() br := bufio.NewReader(fi)
var lineList []string
for {
line, _, err := br.ReadLine()
if err == io.EOF {
break
}
if err != nil {
fmt.Println("Error!")
}
lineList = append(lineList, string(line))
}
return lineList
}
2、main.go 的实现
package main import (
"fmt"
"io"
"net/http"
"os"
"path/filepath"
"strings"
"time"
) var (
url = "http://132.121.00.111:8008/REST/docServiceV2?timestamp=14500903392000&organId=2222&busiType=1&appId=crmlog&staffNo=GZTEST200&filename=JBRZP/20180927/76920180927173700060_713991642.jpg&method=get&password=crmlog1452&latnId=769&signature=731ccc37de5e48dc69bb9ba34b9f3188&version=001"
filename = "JBRZP/20180927/76920180927173700060_713991642.jpg"
str = "latnId=769"
) func checkErr(err error) {
if err != nil {
panic(err)
}
} func CreateDateDir(Path string) string {
foldname := time.Now().Format("")
foldpath := filepath.Join(Path, foldname)
if _, err := os.Stat(foldpath); os.IsNotExist(err) {
os.Mkdir(foldpath, 0777)
os.Chmod(foldpath, 0777)
}
return foldpath
} func downLoad(buf []string, new_url string, filename string, fold string) {
var (
i int
image_url, image_path string
list []string
)
for i = 0; i < len(buf); i++ {
list = strings.Split(buf[i], "/")
image_url = strings.Replace(new_url, filename, buf[i], -1)
res, err := http.Get(image_url)
image_path = filepath.Join(fold, list[len(list)-1])
f, err := os.Create(image_path)
checkErr(err)
io.Copy(f, res.Body)
}
} func main() {
var (
new_url, latnID, newpath string
)
fmt.Println("请输入区号(如广州:200): ")
fmt.Scanln(&latnID)
latnID = "latnID=" + latnID
path, err := os.Getwd()
checkErr(err)
newpath = CreateDateDir(path)
data_path := path + "\\data.txt"
buf := ReadFile(data_path)
new_url = strings.Replace(url, str, latnID, -1)
downLoad(buf, new_url, filename, newpath)
fmt.Println("GetImage Success!")
}
学习参考:
1、 go 语言学习手册 : https://cloud.tencent.com/developer/doc/1101
2、 go 语言开发 IDE 推荐:LiteIDE
3、 go 开发环境配置参考:https://blog.csdn.net/meiwei_1/article/details/79193853
go 语言学习笔记(一)的更多相关文章
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- Go语言学习笔记十一: 切片(slice)
Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
随机推荐
- Redis管道功能
Redis管道,Redis存储用户浏览数据 当频繁的存储获取Redis数据库中的数据时,可以使用Redis的pipeline(管道)功能,将多个相互没有依赖关系的读写操作,如:下一步执行的Redis操 ...
- 猴子分桃—Python
def f(): for i in range(3120,4000): flag = 1 k=i for j in range(5): if i%5==1: i=(i//5)*4 else: flag ...
- maya_help()验证编程过程中模块导入的情况
import rigLib reload(rigLib.base.control)spine = rigLib.base.control.Control( prefix = 'spine1') hel ...
- pip安装报错 解决办法
安装库时报错:Could not fetch URL https://pypi.python.org/simple/wheel/: 解决办法: pip --trusted-host pypi.pyt ...
- golang 修改数组中结构体对象的值的坑
对对象数组逐个修改元素属性时候没有成功,代码如下: for _, configure := range configures { configure.Price = specPriceMap[conf ...
- Flagr 配置说明
说明文档来自官方文档 https://checkr.github.io/flagr/#/flagr_env 完整配置 包含了组件的配置参数以及说明,对于学习如何使用Flagr 还是很重要的,包含了数据 ...
- long和int互转
现在分long,Long,int,Integer互相转换,分8种情况 a , b long, int b=(int)a; long,Integer ...
- SRE_ Google运维解密
# 第IV部分 管理 #系统可用性时间表 # 专用术语 SLO:服务等级目标 LCE(Land-Covered Earth):紧急检修登陆艇 # 紧急事故管理 一次流程管理良好的事故 # 东西早晚要坏 ...
- Kafka入门 --安装和简单实用
一.安装Zookeeper 参考: Zookeeper的下载.安装和启动 Zookeeper 集群搭建--单机伪分布式集群 二.下载Kafka 进入http://kafka.apache.org/do ...
- Django 00-socket、wsgi及初始django学习心得
HTTP基本原理1.http简述:http协议永远都是客户端发起请求,服务端回送请求.客户端和服务端本质上是一个socket客户端和服务端,http协议可以说是基于socket的再上层封装2.http ...