go学习代码合集

暂时懒得把笔记搬运过来,先发几个简单代码吧,持续更新中

1、hello world

package main

import "fmt"

func main() {
	fmt.Println("hello World")
	var name string = "yeah17981"
	fmt.Printf("I am %s\n", name)
	fmt.Print("hello World")

}

知识点:fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。

fmt.Println是输出且换行,fmt.Print是输出,fmt.Printf是按照指定格式输出

2、猜数字(1.0版)

package main

import "fmt"

func main() {
	var a, b int = 0, 90
	fmt.Println("现在进入猜数字游戏")
	for a != b {
		fmt.Print("请输入你猜测的整数:")
		fmt.Scanln(&a)
		fmt.Println("你猜测的数字为:", a)
		if a == b {
			fmt.Println("恭喜你,你猜对了,游戏结束!")
		} else {
			fmt.Println("不好意思,你猜错了,请继续游戏")
		}
	}
}

知识点:不压行的c++选手愤怒,为什么if的}和else得一行,查了半天错误

fmt.Scanln是获取一行输入,fmt.Scan是获取输入(空格或换行分割),fmt.Scanf是获取输入,但是可以指定格式,go语言会根据格式解析参数

3、猜数字(2.0)

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func Min(x, y int) int {
	if x < y {
		return x
	}
	return y
}

func Max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

func main() {
	var a, b int = 0, 100
	var l, r int = 0, 100
	rand.Seed(time.Now().UnixNano())//时间戳初始化随机数种子
	b = rand.Intn(b)
	fmt.Println("现在进入猜数字游戏")
	for a != b {
		fmt.Printf("请输入你猜测的数字(%d,%d):", l, r)
		fmt.Scanln(&a)
		fmt.Println("你猜测的数字为:", a)
		if a == b {
			fmt.Println("恭喜你,你猜对了,游戏结束!")
		} else {
			if a > b {
				fmt.Println("不好意思,您猜测的数字偏大,请继续游戏")
				r = Min(r, a)
			} else {
				fmt.Println("不好意思,您猜测的数字偏小,请继续游戏")
				l = Max(l, a)
			}

		}
	}
}

知识点:go中的math.Max(Min)只能对float64操作,如果是整数,可以写个函数(好麻烦喔),因此Golang并不支持泛型(一个函数名对应一种参数的函数)

使用rand.Intn时,如果没有初始化随机数种子,重复运行代码的时候会发现数字没变,可以用时间戳初始化种子。rand.Int无需参数(返回一个非负的伪随机 int 类型的数),rand.Intn需要参数n(返回一个非负伪随机数,其值范围在半开区间 [0, n)。如果传入的 n <= 0,将会 panic

你可能感兴趣的:(yeah的代码学习,golang,学习,开发语言)