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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值