什么是反射
在运行期间(不是编译期间)探知对象的类型信息和内存结构、更新变量、调用他们的方法。
如何使用反射
函数的参数类型是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()...
创建文件Base.go
package visitor
type Customer interface { // 接待者
Accept(Visitor)
}
type Visitor interface { // 访问者
Visit(Customer)
}
创建文件EnterpriseCustomer.go
package visitor
type E...
创建文件Command.go
package command
type Command interface {
Execute() // 执行
}
创建文件motherBoard.go
package command
import "fmt"
type MotherBoard struct {
}
func (*MotherBoard) WashClothes()...
创建文件MMFeel.go
package memento
import "fmt"
type MMFeel struct {
Tall int
Rich int
Handsome int
}
var States []MMFeel = make([]MMFeel, 0)
var StatesLength int = 0 // 记录轨迹
f...