package mainimport ("log""os""time"
)func main() {log.Println(GetFileModTime("./xiaochuan.txt"))
}
//获取文件修改时间 返回unix时间戳
func GetFileModTime(path string) int64 {f, err := os.Open(path)if err != nil {log.Println("open file error")return time.Now().Unix()}defer f.Close()fi, err := f.Stat()if err != nil {log.Println("stat fileinfo error")return time.Now().Unix()}return fi.ModTime().Unix()...
网站上有9000多张照片要下载://一开始参考https://www.jb51.net/article/153275.htm用reader和writer进行io.Copy,但经常是抓取100多个网页后就崩溃了,//原因似乎是输入输出流影响或并发数量影响,代码执行快,输出流写硬盘慢。//后来参考https://www.cnblogs.com/smartrui/p/12110576.html,改为ioutil.WriteFile直接写文件,还不行//因为一共才9000多张照片,原来的程序每次下载前400张就崩溃了,应该是并发访问太多,网站受不了。...
os包是系统标准库里面有操作系统相关的函数和变量,打开一个文件可以使用os.openpackage mainimport ("fmt""os"
)func main() {file, err := os.Open("c:/tmp.txt")if err != nil {fmt.Println("Open file Failed", err)return}defer func() {file.Close()}()var b []byte = make([]byte, 4096)n, err := file.Read(b)if err != nil {fmt.Println("Open file Failed", err)}data := string(b[:n])fmt.Println(data)
}
原文:https:...
1.Go语言的简述 Go语言可能大家对它并不是很了解,因为它相对其他语言来说实在是太年轻了,从创建到现在仅仅十年,09年,谷歌团队初设该想法,到实现也就是10年时间,对于go语言,它不是万能的,每种语言都有其优点和缺点,就如python一样,以其简约风格获得大多数人的赞可,但是python也因如此,导致它的编译速度比c c++ java慢了数十倍,而GO语言如创始人所说:既有python的风格,又兼备c的编译速度.(虽然每个人都在推荐自己的产品),新型的语言...
1、定义:单例对象的类必须保证只有一个实例存在,全局有唯一接口访问。2、分类: 懒汉方式:指全局的单例实例在第一次被使用时构建。饿汉方式:指全局的单例实例在类装载时构建。3、实现: (1)懒汉方式 1type singleton struct{}
2 var ins *singleton
3 func GetIns() *singleton{
4if ins == nil {
5 ins = &singleton{}
6 }
7return ins
8 } 缺点:非线程安全。当正在创建时,有线程来访问此时ins = nil...
Java程序员的Golang入门指南1.序言Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis、类Evernote的云笔记leanote等。1.1 为什么要学习如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵。如果你是某种语言老手,你就是那门语言的“传道者”,下意识地会保护它。无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的。《肖申克的救赎》对此有很好的注脚:[Red] These walls are funny. First you ...
前两天在解扫地机器人算法的问题时,遇到一个坑
部分代码如下:func move2(startPoint Point) [][]Point {allFootPrint := [][]Point{{startPoint}}for i := 0; i < N; i++ {allNewFootPrint := make([][]Point, 0)for len(allFootPrint) > 0 {curFootPrint := allFootPrint[len(allFootPrint)-1]allFootPrint = allFootPrint[:len(allFootPrint)-1]last := curFootPrint[len(curFootPrint)-1]for _, d := range directions {nextP...
Golang 在使用匿名成员初始化时,如果出现mixture of field:value and value initializers是因为初始化的方式不对,见代码:package mainimport ("fmt"
)type Person struct {Name stringAge intSex string
}type Student struct {PersonId stringGrade string
}func main() {s1 := Student{Person: Person{Name: "张三", Age: 13, Sex: "男"}, Id: "13321", Grade: "三年级"}fmt.Printf("%+v\n", s1)s2 := Student{Person{"张...
一 安装swaggo get github.com/swaggo/swag/cmd/swag 二 安装gin-swaggergo get -u github.com/swaggo/gin-swaggergo get -u github.com/swaggo/gin-swagger/swaggerFiles 三 生成docs文件夹 swag init swag init一定要和main.go处于同一级目录main程序名称必须为main.go, 本人尝试过别的名字比如wbw.go的时候会报如下错误,有知道如何解决的朋友可教我一下cannot parse source files /home/wbw/go/src/debuggrpc/test/testswag/m...
方法定义Golang 方法总是绑定对象实例,并隐式将实例作为第一实参 (receiver)。 一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。1.1. 方法定义: package maintype Test struct{}// 无参数、无返回值func (t Test) method0() {}// 单参数、无返回值
func (t Test) method1(i int) {}// 多参数、无返回值
func (t Test) method2(x, y in...
1. Go 程序的基本结构下面是一个Go 程序的基本结构,包含(包声明,引入包,函数等)package main // 定义包名,package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。import "fmt" // 导入需要使用的包(的函数,或其他元素)func main() { // 程序的入口函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数。fmt.Println("Hello, World!")
} 2. 数据类型go内建基...
package mainimport(
"fmt"
"os"
"bufio"
)func main(){
in :=make(chan string)out :=make(chan string)reader := bufio.NewReader(os.Stdin) go func(){
for {
a:= <-in
out <- a
fmt.Println("in",a)
}
}() go func(){
for { ...
close为内置函数close内置函数关闭一个通道channle,其效果为:在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功。对于已关闭的信道使用v,ok := <- c还会将ok设置为false。package mainimport ("fmt"
)func main() {var chan1 = make(chan int, 2)chan1 <- 10chan1 <- 20close(chan1)<-chan1v, ok := <-chan1fmt.Println(v, ok)
}
当最后一个值从已关闭的clannle中被接受后返回 false,可以用来判断chann...
今天需要写一个算法,获取一串数字中与给定数最接近的数字,代码如下 package mainimport ("fmt"
)func main(){arr:=[]int{12,16,29,34,39,43,55,64,71,89,90,9}zuijin:=get_zuijin(40,arr)fmt.Println(zuijin)
}func get_zuijin(this int,arr []int) int{min:=0 if this==arr[0]{return arr[0]}else if this>arr[0]{min = this-arr[0]}else if this<arr[0]{min = arr[0]-this}for _,v:=range arr{if v==this{return v }else if...
接口定义 Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能 包含任何变量。type Interface interface {test1(a, b int) booltest2()
}
interface类型默认是一个指针。 空接口(a interface{})可以被任何类型所实现,如动物可以被猫、狗、人等实现,反之人不一定能实现动物func main() {var a interface{}var b inta = bfmt.Printf("%T\n", a)var s stringa = sfmt.Printf("%T", a)
}
接口只是一种规范...