Go
cheene
这个作者很懒,什么都没留下…
展开
-
Golang修改图片JPEGjpg的大小和质量
1 借助 nfnt/resize 修改图片的尺寸2 借助 原生的 image/jpeg 修改质量package fyimageimport ( "bytes" "github.com/gogf/gf/os/glog" "github.com/nfnt/resize" "image" "image/jpeg")// 默认最大高度const MaxHeight uint = 1080// 当文件是JPEG格式时,对文件进行压缩。// 压缩的方式主要是借助原生的image/jpeg原创 2020-11-12 10:17:57 · 2698 阅读 · 0 评论 -
goroutine阻塞后发生了什么
在Golang中,goroutine是在线程之上的,如果某个goroutine阻塞,会将该gorotine对应的线程阻塞,此时运行时环境(runtime)会把该线程上其余的goroutine放在其他未阻塞的线程之中。原创 2020-10-31 15:06:59 · 657 阅读 · 0 评论 -
Golang 获取评论列表,以楼中楼的方式
一 楼中楼就是评论里面仍然有评论,类似于网易跟帖,能够让相关的内容聚集在一起。二 基本实现方式定义结构体type Comment struct { Id uint64 `json:"id"` Content string `json:"content"` ArticleId string `json:"article_id"` ParentId uint64 `json:"parent_id"` Child []*Comment `json:"child"`}实现过程func Ge原创 2020-10-23 14:53:07 · 389 阅读 · 0 评论 -
Golang Writer同时写入多个目的地
dest := io.MultiWriter(os.Stdout, file)io.Copy(dest, r.Body)if err := r.Body.Close();err != nil {}原创 2020-10-17 17:11:47 · 515 阅读 · 0 评论 -
Golang 多重排序
结构体定义type A struct { xx int, yy int, zz int,}重写排序方法type Wrapper struct { a []*A by func(p, q *A) bool}type SortBy func(p, q *A) boolfunc (pw Wrapper) Len() int { // 重写 Len() 方法 return len(pw.a)}func (pw Wrapper) Swap(i, j int) { // 重写原创 2020-10-13 11:34:41 · 1136 阅读 · 0 评论 -
Golang同步锁的两种方式
1 原子锁可以借助某个信号向所有的goroutine 发送消息var ( shotdown int64 // 该标志向多个goroutine通知状态 wg sync.WaitGroup)func main() { wg.Add(2) go doWork("A") go doWork("B") time.Sleep(1 * time.Second) atomic.StoreInt64(&shotdown, 1) // 修改 wg.Wait()}func原创 2020-09-25 11:36:08 · 1807 阅读 · 0 评论 -
Golang中, struct结构体忽略字段的方法
1 字段名小写age 字段不会被外包访问type user { Name string age int}2 借助 tag结构体转JSON时,如果 addr 是零值,就会忽略这个字段type Person struct { Name string `json:"name"` Age int `json:"age"` Addr string `json:"addr,omitempty"`}...原创 2020-09-24 10:59:53 · 7038 阅读 · 0 评论 -
Go语言调用接口方法的值传递与指针传递的区别
零 结论接收者类型接收者值指针只能为指针值值与类型都可以一 定义接口type notifier interface { notify()}二 定义一个方法func sendNotification(n notifier) { n.notify() }三 指针传递type user struct { name string email string}func (u *user) notify() { // 这里的接收者是指针类型原创 2020-09-24 10:11:10 · 1104 阅读 · 0 评论 -
Golang 数组拷贝是值拷贝
Golang 数组拷贝是值拷贝,两个的地址不相同,内容相同 var ar1 [5]string ar2 := [5]string{"Red"} ar1 = ar2 fmt.Printf("%p, %p, %+v\n", &ar1, &ar2, ar1 == ar2) // 0xc0000b2000, 0xc0000b2050, true原创 2020-09-22 15:37:32 · 1567 阅读 · 0 评论 -
Golang 浮点数格式化输出,保留一位小数
Golang 浮点数格式化输出,保留一位小数package mainimport ( "fmt" "strconv")// 浮点数 1.0 输出后保存小数位func main() { var f float64 = 1.0 fmt.Println(f) // 1 value := strconv.FormatFloat(f, 'f', 1, 64) fmt.Println(value) // 1.0}...原创 2020-09-22 15:07:00 · 10837 阅读 · 0 评论 -
Golang 判断是否以某个字符串作为首和尾
首尾的判断判断是否以某字符串作为开始 HasPrefixif !strings.HasPrefix(url,"http://") { url = "http://" + url}func HasPrefix(s, prefix string) bool { return len(s) >= len(prefix) && s[0:len(prefix)]== prefix}判断是否以某字符串作为结尾 HasSuffixfunc HasSuffix(s ,suffix原创 2020-06-23 09:01:00 · 7723 阅读 · 2 评论