1、获取当前系统标准时间并显示,将其转化为中文时间格式并显示,结果如下
当前标准时间:3455435455 中文显示为:2021年1月7日 15:30:30
package main
import "fmt"
import "time"
func main(){
now:=time.Now()
fmt.Println(now)
fmt.Println("标准时间:",now.Unix())
fmt.Println(now.Format("2006-01-02 15:04"))
year:=now.Year()
month:=now.Month()
day:=now.Day()
hour:=now.Hour()
minute:=now.Minute()
second:=now.Second()
fmt.Printf("%d年%d月%d日 %d:%d:%d\n",year,month,day,hour,minute,second)
}
2. 数字32768和字符串“65535”实现数字和字符串之间的互相转化并输出,同时使用%T输出数据类型。
package main
import "fmt"
import "strconv"
func main(){
var i int=32765
var j string="65535"
k:=strconv.Itoa(i)
fmt.Printf("%T:%s\n",k,k)
x,_:=strconv.Atoi(j)
fmt.Printf("%T:%d\n",x,x)
}
3.输入一个字符串将其进行MD5后输出字符串。
package main
import "fmt"
import "crypto/md5"
func main() {
var input string
print("请输入一个字符串:")
fmt.Scanf("%s", &input)
fmt.Printf("输入字符串为:%s\n",input)
data := []byte(input)
md5 := md5.Sum(data)
fmt.Printf("md5后的值为:%x\n", md5)
}
4.建立一个100-999的随机数切片并排序输出,每行5个。
package main
import "fmt"
import "math/rand"
import "time"
import "sort"
func main() {
rand.Seed(time.Now().UnixNano()) //以纳秒当前时间设置种子
var data []int
for i := 0; i < 100; i++ {
data=append(data,rand.Intn(1000)) //1000以内随机整数
if (i+1)%5 == 0 {
fmt.Printf("%d\t\n", data[i])
} else {
fmt.Printf("%d\t", data[i])
}
}
println("")
sort.Ints(data)
for i := 0; i < 100; i++ {
if (i+1)%5 == 0 {
fmt.Printf("%d\t\n", data[i])
} else {
fmt.Printf("%d\t", data[i])
}
}
5.建立一个8位长的随机字符串数组str[50]并json输出。
6.输入一个球体半径,输出表面积和体积。要求用结构体和两个方法分别计算表面积和体积。
7.定义字符串切片,append 3个字符串后打印输出并输出长度和最大容量。
package main
import "fmt"
func main() {
var str []string
str=append(str,"sunjian")
str=append(str,"Renting")
str=append(str,"Renxxiao")
fmt.Printf("%s\tLenth:%d\tCap:%d\n",str[0],len(str),cap(str))
fmt.Printf("%s\tLenth:%d\tCap:%d\n",str[1],len(str),cap(str))
fmt.Printf("%s\tLenth:%d\tCap:%d\n",str[2],len(str),cap(str))
}
8.利用不定参函数计算所有参数之和。
package main
func add(x ...int) int {
total := 0
for _, i := range x {
total = total + i
}
return total
}
func main() {
println(add(10, 20, 30, 40, 50, 60, 70, 80, 90, 100))
}
9.输出10000个hello world!查看执行时间
package main
import (
"time"
"fmt"
)
func main(){
begin:=time.Now()
for i:=0;i<10000;i++{
println("Hello World !")
}
sp:=time.Since(begin)
fmt.Printf("程序执行时间:%v",sp)
}
10
解决这个叫做 Fizz-Buzz 的问题: 编写一个程序,打印从 1 到 100 的数字。当是3个倍数数就打印 “Fizz” 代替数字,当是5的倍数就打印 “Buzz” 。当数字同时是3和5的倍数 时,打印 “FizzBuzz” 。
11.建立一个 Go 程序打印下面的内容(到 100 个字符):
A
AA
AAA
AAAA
AAAAA
AAAAAA
AAAAAAA
12.建立一个程序统计字符串里的字符数量: asSASA ddd dsjkdsjs dk 同时输出这个字符串的字节数。 提示: 看看 unicode/utf8 包。
扩展/修改上一个问题的程序,替换位置 4 开始的三个字符为 “abc”。
13.编写一个 Go 程序可以逆转字符串,例如 “foobar” 被打印成 “raboof”。
编写计算一个类型是 float64 的 slice 的平均值的代码。
package main
import "fmt"
func main(){
f:=[]float64{4.5,5,3,6,8,10.3}
var total float64=0
for i:=0;i<len(f);i++{
total=f[i]+total
}
fmt.Printf("avg=%f\n",total/float64(len(f)))
}
14.编写函数,返回其(两个)参数正确的(自然)数字顺序:
15.编写函数接受整数类型变参,并且每行打印一个数字。
package main
import "fmt"
func res( a ...int){
for _,b:=range a{
fmt.Printf("%d\t",b)
}
}
func main(){
res(5,7,8,30,29,4-4,5067)
16.斐波那契数列以:1,1,2,3,5,8,13,... 开始。或者用数学形式表达:x 1 = 1;x 2 = 1;x n = x n−1 + x n−2 ∀n > 2。 编写一个接受 int 值的函数,并给出这个值得到的斐波那契数列。
17.编写一个函数,找到 int slice ( []int ) 中的最大值和最小值。
18.编写一个针对 int 类型的 slice 冒泡排序的函数
19.编写一个函数返回另一个函数,返回的函数的作用是对一个整数 +2。函数的名 称叫做 plusTwo 。然后可以像下面这样使用: p := plusTwo() fmt.Printf("%v\n", p(2)) 应该打印 4。
20.编写一个程序,模仿 Unix 的 cat 程序。对于不知道这个程序的人来说,下面的 调用显示了文件 的内容:
使其支持 n 开关,用于输出每行的行号
21.实现斐波拉契 使用channel。
22. 定义一个包括8个字符串的切片,输出下标3-5的字符串,输出前5个字符串,输出6以后字符串。
23.题目: 有1、2、3、4个数字,可以组成多少个互不相同并且无重复数字的三位数?都是多少?
package main
import "fmt"
func main() {
for i := 1; i < 5; i++ {
for j := 1; j < 5; j++ {
for k := 1; k < 5; k++ {
if (i != k) && (i != j) && (j != k) {
fmt.Println("这个数是: ", i, j, k)
}
}
}
}
}
24.输入一个不定长的成绩单,使用不定参数函数返回三个值分别为课程门数,平均分,总分。
25.编程实现:使用itoa和const,定义一周的数值,如Monday=1 ,Tuesday=2,依次类推Sunday=7。
26.编程实现:实现字符串"123"和整数123之间的互转,并格式化输出他们转换后的类型和值。
27.编程实现:使用类型别名,让go语言支持中文关键字,如 int可以用整数型替代。
28.编程实现:声明一组变量:姓名(Name),年龄(Age),籍贯(From),专业(Major),从控制台接收内容并赋值给这些变量,最后输出这些变量的值。
29.写一个程序,获取当前时间,并格式化成 2017/06/15 08:05:00形式。
30.写一个程序,统计一段代码的执行耗时,单位精确到微秒。
31.计算99乘法表
32.写一个程序,对包含中文的字符串逆序。
33.写一个程序,判断一个字符串串是否是回文。
34.求1到100之内的所有质数,并打印到屏幕上/*、
35.打印出所有的“水仙花数”,所谓“水仙花数”是指⼀一个三位数,其各位数字⽴立方和等于该数本身。例例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方 +3的三次方。求100到1000之间的所有水仙花数,
36.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
37.生成1000个随机数组,实现一个插入排序,输出执行时间。
38.生成1000个随机数组,实现一个选择排序,输出执行时间。
39.生成1000个随机数组,实现一个冒泡排序,输出执行时间。
40.用sort包对数组排序
40.实现一个密码生成工具,支持以下功能
用户可以通过 -l 指定生成密码的长度。提示:可以用标准包 “flag”解析命令行参数 用户可以通过 -t 指定生成密码的字符集,比如 -t num生成全数字的密码。
-t char 生成包含全英⽂文字符的密码,
-t mix包含生成数字和英文的密码,
-t advance 生成包含数字、英文及特殊字符的密码
41.实现一个类似 linux的tree 命令,输入tree.exe能够以树状的形式当前目录下所有文件
42.随机生成1000个100以内整数保存到数组,并倒序打印以及求平均值、最大值、最小值的下标、并查找里面是否有55.
43.实现 WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败。
你会发现 strings.Fields 很有帮助。
代码段:
package main
import "strings"
import (
"golang.org/x/tour/wc"
)
func WordCount(s string) map[string]int {
m:=make(map[string]int)
danci:=strings.Fields(s)
for _,value := range danci{
m[value]++;
}
return m
}
func main() {
wc.Test(WordCount)
}
43:编写一个程序,用于在默认情况下输出其标准输入的 SHA256 散列,但也支持一个输出 SHA384 或 SHA512 散列的命令行标记.
44. echo 程序,使其能够打印 os.Args[0] ,即被执行命令本身的名字
package main
import (
"fmt"
"os"
)
func main() {
var s, sep string
for i := 0; i < len(os.Args); i++ {
s += sep + os.Args[i]
sep = " "
}
fmt.Println(s)
}
45.修改 echo 程序,使其打印每个参数的索引和值,每个一行
package main
import (
"fmt"
"os"
)
func main() {
for k, arg := range os.Args[0:] {
fmt.Println(k, arg)
}
45.一个整数输出二进制结果并按位取反,输入结果。并输出左移右移一位后结果。两个整数进行按位与和按位异或操作。
46.循环输出1~50的数字遇到包含4的数字跳过。
47.开启十个协程,实现0到9这十个数据自己和自己相加。(这十个几乎是同时执行的。)
48.建立一个包实现加减乘除,四则运算.在主程序中调用该包。