概述
简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。
随着硬件技术的发展,并发程序变得越来越重要。web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会后台执行各种计算任务和网络请...
func main() {
msg, err := ExecAsRes("ls -al|grep test")
fmt.Println(msg, err)
}
// ExecAsRes 执行shell指令,有返回值
func ExecAsRes(cmd string) (msg string, err error) {
param := append([]string{"-...
func main() {
err := CreateMutiDir("/Users/jackey/a/b")
if err != nil {
fmt.Println("创建失败", err)
} else {
fmt.Println("创建成功")
}
}
// CreateMutiDir 调用os.MkdirAll递归...
什么是反射
在运行期间(不是编译期间)探知对象的类型信息和内存结构、更新变量、调用他们的方法。
如何使用反射
函数的参数类型是interface{},需要在运行时对原始类型进行判断,针对不同的类型采取不同的处理方式。比如json...
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
"time"
)
var Mong...
声明一个泛型函数
package main
import "fmt"
func printSlice[T any](s []T){
for _,v := range s{
fmt.Printf("%v\n",v)
}
}
func main(){
printSlice[int]([]int{66,77,88,99,100})
pri...
package main
import (
"fmt"
"reflect"
)
type Animal struct {
A string `json:"a"`
}
func (m *Animal) Eat() {
fmt.Println("eat", m.A)
}
func main() {
animal := Animal{
...
题目要求:
有三个函数,分别打印“dog”,“fish”,“cat”,要求每个函数都起一个Goroutine,请按照“dog”,“fish”,“cat”的顺序打印在屏幕上,100次。
解题代码:
package main
import (
"fmt"
"sync"
"sync/atomic...
需要引入包:github.com/dora-go/query-parser
示例代码:
type pData struct {
A string `schema:"a"`
B string `schema:"b"`
}
func main() {
urlPath := "https://ijackey.com/?a=a&b=b"
data, _...
引用包:
go get github.com/xuri/excelize/v2
示例代码:
func main() {
// 获取项目的执行目录
path := "go/src/excel"
// 打开Excel文件
f, err := excelize.OpenFile(path + "/test.xlsx")
if err !...
没有指定标签的 break 只会跳出 switch/select 语句,若不能使用 return 语句跳出的话,可为 break 跳出标签指定的代码块:
// break 配合 label 跳出指定代码块
func main() {
loop:
for {
switch {
cas...
运行一下代码查看输出情况:
func main() {
tests1ice := []int{1, 2, 3, 4, 5}
for _, v := range tests1ice {
go func() {
fmt.Println(v)
}()
}
time.Sleep(time.Millisecond...
func main() {
data := []int{1, 2, 3}
for i := 0; i < len(data); i++ {
ptr := unsafe.Pointer(uintptr(unsafe.Pointer(&data[0])) + uintptr(i)*unsafe.Sizeof(data[0]))
fmt.Printf("%d ", *...
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mo...
以下两个函数执行结果一样吗?为什么?
func f2() {
ia := [...]int{1, 2, 3, 4, 5}
ia2 := ia[1:3]
for i := 6; i < 10; i++ {
ia2 = append(ia2, i)
}
fmt.Println(ia, ia2)
}
func f1()...