营销技能提升指南:四层能力框架与实战方法论
2026/10/28 10:08:22
安装Go语言
安装在默认位置
安装完成
C:\Program Files\Go%GO_HOME%\bin;go versiongo mod init gore-demogo install github.com/x-motemen/gore/cmd/gore@latestex3_1.gopackagemainimport"fmt"funcmain(){varageint=25fmt.Println("age =",age)varscorefloat64=87.5fmt.Println("score =",score)varnamestring="howard"fmt.Println("name =",name)varflagbool=truefmt.Println("flag =",flag)}ex3_2_1.gopackagemainimport"fmt"funcmain(){age:=20ifage>=18{fmt.Println("已成年,欢迎访问~")}else{fmt.Println("未成年,拒绝访问~")}}ex3_2_2.gopackagemainimport"fmt"funcmain(){// 基本的for循环sum:=0fori:=1;i<=100;i++{sum=sum+i}fmt.Println("1 + 2 + 3 + ... + 100 =",sum)// 类似while的for循环sum=0i:=1fori<=100{sum=sum+i i++}fmt.Println("1 + 2 + 3 + ... + 100 =",sum)}ex4_1.gopackagemainimport"fmt"// add函数用于计算两个整数的和funcadd(aint,bint)int{returna+b}funcmain(){// 调用add函数并打印结果fmt.Println("sum =",add(100,150))}ex5_1.gopackagemainimport"fmt"// User 结构体定义,包含 Name 和 Age 两个字段typeUserstruct{NamestringAgeint}// main 函数,程序的入口点funcmain(){// 使用字段初始化值创建 User 实例user1:=User{"Alice",30}fmt.Printf("User1: %s, %d years old\n",user1.Name,user1.Age)// 使用字段名初始化创建 User 实例user2:=User{Name:"Bob",Age:25}fmt.Printf("User2: %s, %d years old\n",user2.Name,user2.Age)// 使用 new 函数创建 User 实例的指针user3:=new(User)user3.Name="Charlie"user3.Age=35fmt.Printf("User3: %s, %d years old\n",user3.Name,user3.Age)// 调用 User 结构体的方法user1.Introduce()user2.Introduce()user3.Introduce()}// Introduce 方法,用于打印用户的自我介绍func(u User)Introduce(){fmt.Printf("Hi, I'm %s and I'm %d years old.\n",u.Name,u.Age)}User结构体,包含Name和Age两个字段。在main函数中,我们创建了三个User实例:user1、user2和user3。user1和user2是通过字段初始化值和字段名初始化的方式创建的,而user3是通过new函数创建的指针类型的实例。每个User实例都调用了Introduce方法,该方法打印出用户的自我介绍。这个程序展示了如何在Go语言中定义结构体、创建结构体实例以及为结构体关联方法。ex6_1.gopackagemainimport("fmt""sync""time")// 定义一个工作函数,模拟并发执行的任务funcworker(idint,wg*sync.WaitGroup){deferwg.Done()// 通知WaitGroup这个goroutine已经完成fori:=0;i<5;i++{fmt.Printf("Worker %d says hello %d\n",id,i+1)time.Sleep(time.Millisecond*100)// 模拟工作}}funcmain(){varwg sync.WaitGroup// 创建一个WaitGroup实例// 启动多个goroutine并发执行worker函数fori:=1;i<=5;i++{wg.Add(1)// 增加WaitGroup的计数器goworker(i,&wg)// 启动一个新的goroutine}wg.Wait()// 等待所有goroutine完成fmt.Println("All workers have finished.")}sync.WaitGroup来管理并发执行的任务。程序中定义了一个worker函数,它模拟了一个并发执行的任务,打印五次"hello"消息,并在每次打印后暂停100毫秒。在main函数中,我们创建了一个sync.WaitGroup实例,并启动了五个goroutine来并发执行worker函数。每个goroutine在开始执行前都会通过wg.Add(1)增加WaitGroup的计数器,表示有一个任务需要完成。当每个worker函数执行完毕后,它们会通过defer wg.Done()通知WaitGroup一个任务已经完成。最后,main函数中的wg.Wait()会阻塞,直到WaitGroup的计数器归零,即所有goroutine都完成了它们的任务。这个程序展示了Go语言并发编程的基本模式,包括goroutine的创建、sync.WaitGroup的使用以及并发任务的同步。ex7_1.gopackagemainimport("fmt""net/http")// helloHandler 是一个简单的HTTP处理函数,用于响应客户端的请求funchelloHandler(w http.ResponseWriter,r*http.Request){// 使用fmt.Fprintf向客户端发送响应fmt.Fprintf(w,"Hello Go World~")}funcmain(){// 使用http.HandleFunc将URL路径"/"与helloHandler函数关联http.HandleFunc("/",helloHandler)// 使用http.ListenAndServe启动服务器,监听8080端口,没有特定的处理器// 因此使用默认的ServeMuxhttp.ListenAndServe(":8080",nil)}fmt和net/http包,然后在helloHandler函数中使用fmt.Fprintf向http.ResponseWriter发送响应。在main函数中,使用http.HandleFunc将根路径"/"与helloHandler函数关联,最后调用http.ListenAndServe在8080端口启动服务器。这个服务器会一直运行,直到被外部中断。