go语言之hello world

本文通过三个不同场景的HelloWorld程序介绍了Go语言的基础用法,包括标准输出、HTTP服务器搭建及协程与通道的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gopath 环境变量
把项目路径设置到默认的gopath下面,这样就不用去设置gopath

最前面的是系统的用户目录,第一个就是gopath的默认目录,第二个是公司名称和用户名(这里我只写了一级),最后是项目名



下面是简单版的helloworld

package main

import "fmt"

func main() {
	fmt.Println("Hello world!")
}

每一个里面只能有一个main函数,区分不同的package是根据目录来的所以每一个main函数所在的go文件都在不同的文件夹下

下面是server版的helloworld

package main

import (
	"net/http"
	"fmt"
)

func main() {
	http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
		//fmt.Fprintln(writer, "<h1>Hello world!</h1>")
		fmt.Fprintf(writer, "<h1>Hello world %s!", request.FormValue("name"))
	})
	http.ListenAndServe(":8888", nil)
}

使用 %s 这种参数就只能用Fprintf输出,localhost:8888/?name=xxx 即可访问

下面试并发版的helloworld

package main

import (
	"fmt"
)

func main() {
	ch := make(chan string)
	// go starts a goroutine
	for i := 0; i < 5000; i++ {
		go printHelloWorld(i, ch)
	}
	for {
		msg := <- ch
		fmt.Println(msg)
	}
	//time.Sleep(time.Millisecond)
}

func printHelloWorld(i int, ch chan string) {
	//fmt.Printf("Hello world from goroutine %d!\n", i)
	for {
		ch <- fmt.Sprintf("Hello world from goroutine %d!\n", i)
	}
}

go 关键字会启动一个goroutine,这里启动了5000个,争着往chan输出helloworld,channel为同时运行的函数之间通信
提供了通道
goroutine是一个编译器级别的多任务,它和线程不一样,很多个goroutine可以同时映射到一个物理线程上去
go语言不支持函数的重载,不同函数的名字是不一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值